问题描述
def viewList(self):
if self.start == None:
print("List is empty!")
else:
temp = self.start
while (temp):
print(temp.data,end="-->")
temp = temp.next
def insertLast(self,data):
newNode = Node(data)
if self.start == None:
self.start = newNode
else:
temp = self.start
while (temp.next):
temp = temp.next
temp.next = newNode
在上面两种方法中,我们需要遍历到最后一个节点,以便我们可以附加或打印所需的链表但是,为什么在viewList
方法中遍历时我们使用{{1 }} 但在 while(temp):
方法中我们使用 insertLast
。两者有什么区别,请给我解释一下。
解决方法
考虑链表的结构:
Element1 --> Element2 --> ... --> ElementN --> null
打印列表时,我们要确保 current 元素不是 null
。
在列表末尾插入值时,我们检查next元素是否为null
。
在我看来,这只是编写代码的方式:
viewList() 可以重写为使用 while (temp.next)
:
def viewList(self):
if self.start == None:
print("List is empty!")
else:
temp = self.start
while (temp.next):
print(temp.data,end="-->")
temp = temp.next
print(temp.data,end="-->")
insertLast() 可以重写为使用 while (temp)
:
def insertLast(self,data):
newNode = Node(data)
if self.start == None:
self.start = newNode
else:
prev = NULL
temp = self.start
while (temp):
prev = temp
temp = temp.next
prev.next = newNode