首页 > 代码库 > python——python 数据结构之双向链表的实现
python——python 数据结构之双向链表的实现
和单链表类似,只不过是增加了一个指向前面一个元素的指针而已。
示意图:
python 实现代码:
#Personal Python Data Structure--PPDS##!/usr/bin/python# -*- coding: utf-8 -*-class Node(object): def __init__(self,val,p=0): self.data = val self.next = p self.prev = pclass LinkList(object): def __init__(self): self.head = 0 def initlist(self,data): self.head = Node(data[0]) p = self.head for i in data[1:]: node = Node(i) p.next = node node.prev = p p = p.next def getlength(self): length = 0 p = self.head while p != 0: length+=1 p = p.next return 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 q.prev = p 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 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 if index == 0: q = Node(item,self.head) self.head = q j = 0 p = self.head post = self.head 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.prev = post q.next = p p.prev = q def delete(self,index): if self.is_empty() or index < 0 or index > self.getlength(): print (‘Linklist is empty.‘) return if index ==0: q = Node(item,self.head) self.head = q j = 0 p = self.head post = self.head while p.next != 0 and j < index: post = p p = p.next j+=1 if index ==j: post.next = p.next p.next.prev = post def index(self,value): if self.is_empty(): print (‘Linklist is empty.‘) return i = 0 p = self.head while p.next != 0 and not p.data =http://www.mamicode.com/= value: p = p.next i+=1 if p.data =http://www.mamicode.com/= value: return i else: return -1if __name__ == ‘__main__‘: l=LinkList() llist=[7,3,10,4,5,] l.initlist(llist) print(l.getlength()) print(l.is_empty()) # l.append(11) # l.insert(2,100) print(l.getlength()) print(l.getitem(0)) for i in range(l.getlength()): print(l.index(llist[i])) l.clear() print(l.getlength())
python——python 数据结构之双向链表的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。