码迷,mamicode.com
首页 > 编程语言 > 详细

Python 之简易单链表

时间:2015-05-25 18:06:25      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

单链表的基本要素有 个,数据项和连接项。这两项在 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 (rOh, I cant)
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

 

Python 之简易单链表

标签:

原文地址:http://www.cnblogs.com/pycansi/p/4528318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!