在打印和追加方法中遍历链表的区别

问题描述

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