標籤:
單鏈表的基本要素有 2 個,資料項目和串連項。這兩項在 Python 中可以通過對象及其屬性來實現。
1 class Node: 2 def __init__ (self, data): 3 self.data = data 4 self.next = None 5 6 def add (self, data): 7 p = self 8 9 while p.next != None:10 p = p.next11 12 p.next = Node (data)13 14 def subtract (self):15 p = self16 17 if p.next == None:18 print (r‘Oh, I can‘t‘)19 return20 21 while p.next.next != None:22 p = p.next23 24 p.next = None 25 26 def show (self):27 p = self28 29 while p != None:30 print (p.data, end=‘ ‘)31 p = p.next32
>>> t = Node (1)>>> t.show ()1 >>> t.add (2)>>> t.show ()1 2 >>> t.subtract ()>>> t.show ()1
不過剛開始 add 是這樣實現的:
1 def add (self, data):2 p = self.next3 4 while p != None:5 p = p.next6 7 p = Node (data)
最後測驗無效,思考ing
p 和 self 是什麼關係?引用還是複製?
查詢了一下,Python 中一切變數皆是引用。(還有一句知名度較高:Python 中一切資料皆是對象)
如果修改引用內容,分2種情況考慮:
如果引用對象為不可變對象:
建立新對象
如果引用對象為可變對象:
修改原對象
而上面 add 失效,是因為 p = Node (data) 直接解了引用,而不是修改了原對象
--data: 2015-05-25
Python 之簡易單鏈表