class Node: def __init__(self, value): self.data = value self.next = None class SinglyLinkedList: nodes = [] def __init__(self): self.head = None self.tail = None def insertHead(self, value): node = Node(value) if(self.head is None): self.head = node self.tail = node return node.next = self.head self.head = node def insertTail(self, value): node = Node(value) if(self.tail is None): self.head = node self.tail = node return self.tail.next = node self.tail = node def displayNodes(self): temp = self.head while (temp is not None): self.nodes.append(temp.data) temp = temp.next return self.nodes ### Object 1obj1 = SinglyLinkedList()obj1.insertHead(8)obj1.insertHead(7)obj1.insertHead(5)obj1.insertTail(30)print(obj1.displayNodes())### Object 2obj2 = SinglyLinkedList()obj2.insertHead(20)obj2.insertHead(10)print(obj2.displayNodes())### Object 3obj3 = SinglyLinkedList()obj3.insertHead(50)obj3.insertHead(22)obj3.insertHead(19)print(obj3.displayNodes())print(obj3.nodes)### Object 4obj4 = SinglyLinkedList()obj4.insertHead(45)obj4.insertHead(40)obj4.insertHead(35)obj4.insertHead(28)print(obj4.displayNodes())輸出python flatten_LL.py[5, 7, 8, 30][5, 7, 8, 30, 10, 20][5, 7, 8, 30, 10, 20, 19, 22, 50][5, 7, 8, 30, 10, 20, 19, 22, 50][5, 7, 8, 30, 10, 20, 19, 22, 50, 28, 35, 40, 45]這是單向鏈表的代碼。我創建了四個實例,并將鏈表值存儲在名為“nodes”的列表變量中。對于每個實例,我都返回該列表變量“節點”。如您所見,從第二個實例的輸出來看,前一個實例的節點顯示仍保持原樣。我想知道為什么會這樣,因為對于每個實例,存儲都是單獨分配給該實例的。
1 回答

四季花海
TA貢獻1811條經驗 獲得超5個贊
因為nodes
是(本質上)一個靜態變量。
您可能打算這樣寫:
class?SinglyLinkedList:???? ????def?__init__(self): ????????self.nodes?=?[] ????????self.head?=?None ????????self.tail?=?None
添加回答
舉報
0/150
提交
取消