~~

导航

Python 之简易单链表

单链表的基本要素有 个,数据项和连接项。这两项在 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.next
11 
12         p.next = Node (data)
13 
14     def subtract (self):
15         p = self
16 
17         if p.next == None:
18             print (r'Oh, I can't')
19             return
20 
21         while p.next.next != None:
22             p = p.next
23 
24         p.next = None 
25 
26     def show (self):
27         p = self
28 
29         while p != None:
30             print (p.data, end=' ')
31             p = p.next
32     

 

>>> 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.next
3 
4     while p != None:
5         p = p.next
6 
7     p = Node (data)

 

最后测验无效,思考ing

和 self 是什么关系?引用还是复制?

查询了一下,Python 中一切变量皆是引用。(还有一句知名度较高:Python 中一切数据皆是对象)

如果修改引用内容,分2种情况考虑:

  如果引用对象为不可变对象:

    创建新对象

  如果引用对象为可变对象:

    修改原对象

 

而上面 add 失效,是因为 p = Node (data) 直接解了引用,而不是修改了原对象

 

--data: 2015-05-25

 

posted on 2015-05-25 16:59  冰尘醉  阅读(204)  评论(0编辑  收藏  举报