Python链接列表中心项

时间:2018-03-31 00:20:07

标签: python arrays list

我在互联网上找到了一个链表代码。我的问题是在链表中找到中心项目的最简单方法是什么?这是代码。

class Node:

   def __init__(self,data,nextNode=None):
       self.data = data
       self.nextNode = nextNode

   def getData(self):
       return self.data

   def setData(self,val):
       self.data = val

   def getNextNode(self):
       return self.nextNode

   def setNextNode(self,val):
       self.nextNode = val

class LinkedList:

   def __init__(self,head = None):
       self.head = head
       self.size = 0

   def getSize(self):
       return self.size

   def addNode(self,data):
       newNode = Node(data,self.head)
       self.head = newNode
       self.size+=1
       return True

   def printNode(self):
       curr = self.head
       while curr:
           print(curr.data)
           curr = curr.getNextNode()

1 个答案:

答案 0 :(得分:1)

遍历列表两次。

首次跟踪总长度。

第二次,当你到达中间时停止(从第一次遍历/ 2获得的长度)。

或者,您可以使用two pointer technique.

编辑:由于大小是链接列表的特定实现中的属性,因此您不必遍历整个列表以获得总长度。