Python单链表的简单实现方法
本文实例讲述了Python单链表的简单实现方法,分享给大家供大家参考。具体方法如下:
通常来说,要定义一个单链表,首先定义链表元素:Element.它包含3个字段:
list:标识自己属于哪一个list
datum:改元素的value
next:下一个节点的位置
具体实现代码如下:
classLinkedList(object):
classElement(object):
def__init__(self,list,datum,next):
self._list=list
self._datum=datum
self._next=next
defgetDatum(self):
returnself._datum
datum=property(
fget=lambdaself:self.getDatum())
defgetNext(self):
returnself._next
next=property(
fget=lambdaself:self.getNext())
def__init__(self):
self._head=None
self._tail=None
defgetHead(self):
returnself._head
head=property(
fget=lambdaself:self.getHead())
defprepend(self,item):
tmp=self.Element(self,item,self._head)
ifself._headisNone:
self._tail=tmp
self._head=tmp
definsert(self,pos,item):
i=0
p=self._head
whilep!=Noneandi<pos-1:
p=p._next
i+=1
ifp==Noneori>pos-1:
return-1
tmp=self.Element(self,item,p._next)
p._next=tmp
return1
defgetItem(self,pos):
i=0
p=self._head
whilep!=Noneandi<pos-1:
p=p._next
i+=1
ifp==Noneori>post-1:
return-1
returnp._datum
defdelete(self,pos):
i=0
p=self._head
whilep!=Noneandi<pos-1:
p=p._next
i+=1
ifp==Noneori>post-1:
return-1
q=p._next
p._nex=q._next
datum=p._datum
returndatum
defsetItem(self,pos,item):
i=0
p=self._head
whilep!=Noneandi<pos-1:
p=p._next
i+=1
ifp==Noneori>post-1:
return-1
p._datum=item
return1
deffind(self,pos,item):
i=0
p=self._head
whilep!=Noneandi<pos-1:
ifp._datum==item:
return1
p=p._next
i+=1
return-1
defempty(self):
ifself._head==None:
return1
return0
defsize(self):
i=0
p=self._head
whilep!=Noneandi<pos-1:
p=p._next
i+=1
returni
defclear(self):
self._head=None
self._tail=None
test=LinkedList()
test.prepend('test0')
printtest.insert(1,'test')
printtest.head.datum
printtest.head.next.datum
希望本文所述对大家的Python程序设计有所帮助。