用python实现链表操作
2015-07-30 16:58
826 查看
下面的方式涉及到:初始化链表、链表长度、插入、删除、新增、查找、逆序
class Node(object): def __init__(self,data,p=0): self.data = data self.next = p class LinkList(object): def __init__(self): self.head = 0 def initlist(self): print("input numbers here.'!' to quit") data=input() if data is not '-1': self.head=Node(int(data)) p=self.head while data != '-1': data=input() if data == '-1': break else: p.next=Node(int(data)) p=p.next print("输入结束!") #print("输入结束,当前序列为:") #p=self.head #while p!=0: # print(p.data) # p=p.next def getlength(self): p = self.head length = 0 while p!=0: length+=1 p = p.next #return length print("当前链表的长度为%d="%length) def is_empty(self): if self.getlength() ==0: return True else: return False def clear(self): self.head = 0 def append(self,item): q = Node(item) if self.head ==0: self.head = q else: p = self.head while p.next!=0: p = p.next p.next = q print("在链表尾部插入数据后,链表为:") p=self.head while p!=0: print(p.data) p=p.next def getitem(self,index): if self.is_empty(): print ('Linklist is empty.') return j = 0 p = self.head while p.next!=0 and j <index: p = p.next j+=1 if j ==index: #return p.data print("在链表的%d位置上的数值是"%(p.data)) else: print ('target is not exist!') def insert(self,index,item): if self.is_empty() or index<0 or index >self.getlength(): print ('Linklist is empty.') return p=self.head if index ==0: q = Node(item) q.next=self.head self.head=q else: p = self.head post = self.head j = 0 while p.next!=0 and j<index: post = p p = p.next j+=1 if index ==j: q = Node(item,p) post.next = q q.next = p p=self.head print("插入某个值后的链表") while p!=0: print(p.data) p=p.next def delete(self,index): if self.is_empty() or index<0 or index >self.getlength(): print ('Linklist is empty.') return p=self.head if index ==0: q = self.head self.head = q.next p=self.head else: p = self.head post = self.head j = 0 while p.next!=0 and j<index: post = p p = p.next j+=1 if index ==j: post.next = p.next print("删除某个节点后的链表:") p=self.head while p!=0: print(p.data) p=p.next def index(self,value): if self.is_empty(): print ('Linklist is empty.') return p = self.head i = 0 while p.next!=0 and not p.data ==value: p = p.next i+=1 if p.data == value: #return i print("要找的值在链表中的第%d位,"%(i+1)) else: #return -1 print("没有此值!") def rever(self): self.initlist() p=self.head nex=self.head.next pre=Node(0) while self.head.next!=0: nex=self.head.next self.head.next=pre pre=self.head self.head=nex self.head.next=pre pre=self.head1 print("逆序输出节点:") #此处的0是链表结尾处代表结束的,而pre链表的整个序列是2,1,0-->这个0代表整数0 while pre.next!=0: print(pre.data) pre=pre.next if __name__=="__main__": l = LinkList() l.initlist() #l.rever() #l.getlength() #l.getitem(0) #l.delete(0) #l.insert(0,1) #l.index(2) #l.getitem(0) l.append(1)
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- [C/C++]反转链表
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法