单链表的基本要素有 2 个,数据项和连接项。这两项在 Python 中可以通过对象及其属性来实现。
class Node:
def __init__ (self, data):
self.data = data
self.next = None def add (self, data):
p = self while p.next != None:
p = p.next p.next = Node (data) def subtract (self):
p = self if p.next == None:
print (r'Oh, I can't')
return while p.next.next != None:
p = p.next p.next = None def show (self):
p = self while p != None:
print (p.data, end=' ')
p = p.next
>>> t = Node (1)
>>> t.show ()
1
>>> t.add (2)
>>> t.show ()
1 2
>>> t.subtract ()
>>> t.show ()
1
不过刚开始 add 是这样实现的:
def add (self, data):
p = self.next while p != None:
p = p.next p = Node (data)
最后测验无效,思考ing
p 和 self 是什么关系?引用还是复制?
查询了一下,Python 中一切变量皆是引用。(还有一句知名度较高:Python 中一切数据皆是对象)
如果修改引用内容,分2种情况考虑:
如果引用对象为不可变对象:
创建新对象
如果引用对象为可变对象:
修改原对象
而上面 add 失效,是因为 p = Node (data) 直接解了引用,而不是修改了原对象
--data: 2015-05-25