示意图:
python双向链表实现代码:
代码如下:
#!/usr/bin/python# -*- coding: utf-8 -*-
class node(object): def __init__(self,val,p=0): self.data = val self.next = p self.prev = p
class linklist(object): def __init__(self): self.head = 0
def __getitem__(self, key):
if self.is_empty(): print ‘linklist is empty.’ return
elif key self.getlength(): print ‘the given key is error’ return
else: return self.getitem(key)
def __setitem__(self, key, value):
if self.is_empty(): print ‘linklist is empty.’ return
elif key self.getlength(): print ‘the given key is error’ return
else: self.delete(key) return self.insert(key)
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):
p = self.head length = 0 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