带哑头的循环双向链表实现后输出顺序反向问题求解
问题诊断
- 你代码的插入逻辑为头插法:每次新节点都插入到哑头
head和第一个有效节点之间,输入序列会被倒序存储,遍历输出自然和输入顺序相反。 - 你当前的遍历逻辑是从
head.next开始向后遍历,和存储顺序一致,所以会输出反向结果。
修复代码
修改DoublyList类__init__方法中的插入逻辑,改用尾插法即可:
class Node: def __init__(self, value, next, prev ): self.data = value self.next = next self.prev = prev class DoublyList: def __init__(self, c): self.head = Node(None,None,None) #instance variable self.head.prev = self.head.next = self.head for i in c: store = Node(i, None, None) # 尾插法:新节点插在当前尾部(head.prev)和head之间 store.prev = self.head.prev store.next = self.head self.head.prev.next = store self.head.prev = store def showList(self): n = self.head.next while n !=self.head: print(n.data, end=' ') n = n.next a = [10,20,30,40,50,60] l1 = DoublyList(a) l1.showList() # 输出:10 20 30 40 50 60
内容的提问来源于stack exchange,提问作者Alam
相关产品推荐
相关产品推荐

