python学习笔记01--链表的实现
来源:互联网 发布:java中文文档 编辑:程序博客网 时间:2024/06/18 03:13
在C语言中,我们通常通过“指针+结构体”来实现链表,但是在python中并没有指针,所以我们必须考虑其它 的方法。在这里,我们通过定义节点类node,并通过类的嵌套引用来实现链表。node类的定义就像链表中的节点一样,包含两个对象,节点的值(data)和表示指向下一个节点的next。在这里我们通过节点的next对象再次引用类node来实现next指向下一个节点的目标,这样不断嵌套应用,链表也就实现了。代码如下:
__author__ = 'jiangzhiheng'#coding=utf-8import copyclass node(): #定义一个节点类 def __init__(self,val,p=0): self.data = val self.next = pclass linklist(): def __init__(self): self.head = 0 def initlist(self,data): self.head = node(data[0]) p = self.head for i in data[1:]: p.next = node(i) p = p.next def getlength(self): #获得链表元素的个数 p = self.head length = 0 while p!=0: length+=1 p = p.next return length def insert(self,item,index): if index>self.getlength() or index<=0: print('please enter a valid index') return p = self.head q = node(item) while (index-1)!=0: #在第index后面插入对象item index=index-1 p = p.next post = copy.deepcopy(p.next) p.next = q q.next = post def getitem(self,index): if index>self.getlength() or index<=0: print('please enter a valid index') return p = self.head while (index-1)!=0: index=index-1 p = p.next return p.data #返回链表第index个对象的值 def remove(self,index): if index>self.getlength() or index<=0: print('please enter a valid index') return p = self.head if index == 1: self.head = p.next return while (index-2)!=0: #移除链表中的第index对象 index=index-1 p = p.next p.next = p.next.next def search(self,item): #在链表中搜索对象item p = self.head i = 1 while p!=0: if p.data == item: return i i+=1 p = p.nextl = linklist()l.initlist(range(7))print(l.getlength())l.insert(10,5)print(l.getitem(6))l.remove(5)print(l.search(5))i = 1while i<l.getlength(): print(l.getitem(i),end=',') i+=1
结果
0 0
- python学习笔记01--链表的实现
- Python学习笔记:Trie Tree的实现
- PCA学习笔记 python实现
- 机器学习实战笔记(Python实现)-01-机器学习实战
- 机器学习实战笔记(Python实现)-01-机器学习实战
- 机器学习实战笔记(Python实现)-01-机器学习实战
- python的学习笔记
- python的学习笔记
- Python的学习笔记
- 【学习笔记】python实现的套接字socket
- 【python学习笔记】实现linux终端下的getch()函数
- 机器学习实战笔记(三):决策树算法的Python实现
- Python 学习笔记01
- python学习笔记-01
- Python学习笔记01
- Python学习笔记01
- python学习笔记01
- Python学习笔记01
- http
- android SDK manager 无法获取更新版本列表
- 3D编程的四个境界
- openssl unable报错
- 8.31总结
- python学习笔记01--链表的实现
- Java Swing MVC模式实例(笔记备忘)
- deploy zabbix 2.2.10 on ubuntu 14.04 64bit
- 内核模块编译时出现的问题解决
- tomcat JAVA启动参数 JAVA_OPTS
- 有赞商城二次开发有赞商城库存同步无缝对接仓库管理软件订单同步
- 关于jquery定义对象的一种写法!
- 通知
- 1049 自增自减【水题】