Python 之简易单链表

时间:2022-10-31 20:44:31

单链表的基本要素有 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