【问题标题】:I added 4 elements in the linked list, but why only three are displayed and the last element is not printed我在链表中​​添加了4个元素,但是为什么只显示了三个而没有打印最后一个元素
【发布时间】:2021-07-07 07:02:59
【问题描述】:

这是我的代码。请帮助我找出为什么没有打印出链表的最后一个元素以及如何打印最后一个元素。

class Node(object):
    def __init__(self, value):
        self.value = value
        self.next = None

class LinkedList(object):
    def __init__(self, head = None):
        self.head = head

def append(self, data):
    current = self.head
    if self.head:
        while current.next:
            current= current.next
        current.next= data
    else:
        self.head = data

def show(self):
    current = self.head
    while current.next:
        print(current.value)
        current = current.next


ll1=LinkedList()
e1= Node(1)
e2 = Node(2)
e3 = Node(3)
e4 = Node(4)

ll1.append(e1)
ll1.append(e2)
ll1.append(e3)
ll1.append(e4)
ll1.show()

Image of output

【问题讨论】:

  • 最后一个节点的current.next 将始终为None,这将在打印最后一个节点之前终止while循环。
  • show方法中使用while current作为终止条件。

标签: python linked-list singly-linked-list


【解决方案1】:

因为 e3.next 是 e4,但 e4.next 是 None。所以while循环会在e3结束。

只需像这样更改显示功能:

def show(self):
    current = self.head
    while current.next:
        print(current.value)
        current = current.next
        if not current.next:
            print(current.value)

【讨论】:

    【解决方案2】:

    最后一个元素没有下一个元素,所以不打印;您可以将代码更改为 do-while 格式,如底部

    def show(self):
        current = self.head
        while True:
            print(current.value)
            current = current.next
            if not current:
                break
    

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 2020-04-15
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多