list:标识自己属于哪一个list
datum:改元素的value
next:下一个节点的位置
- class LinkedList(object):
-
-
class Element(object):
-
-
def __init__(self,list,datum,next):
-
self._list = list
-
self._datum = datum
-
self._next = next
-
-
def getDatum(self):
-
return self._datum
-
-
datum = property(
-
fget = lambda self: self.getDatum())
-
-
def getNext(self):
-
return self._next
-
-
next = property(
-
fget = lambda self: self.getNext())
-
-
-
def __init__(self):
-
-
self._head = None
-
self._tail = None
-
def getHead(self):
-
return self._head
-
head = property(
-
fget = lambda self: self.getHead())
-
def prepend(self,item):
-
tmp = self.Element (self,item,self._head)
-
if self._head is None:
-
self._tail = tmp
-
self._head = tmp
-
-
def insert(self, pos, item):
-
i = 0
-
p = self._head
-
while p != None and i < pos -1:
-
p = p._next
-
i += 1
-
if p == None or i > pos-1:
-
return -1
-
tmp = self.Element(self, item, p._next)
-
p._next = tmp
-
return 1
-
def getItem(self, pos):
-
i = 0
-
p = self._head
-
while p != None and i < pos -1:
-
p = p._next
-
i += 1
-
if p == None or i > post-1:
-
return -1
-
return p._datum
-
def delete(self, pos):
-
i = 0
-
p = self._head
-
while p != None and i < pos -1:
-
p = p._next
-
i += 1
-
if p == None or i > post-1:
-
return -1
-
q = p._next
-
p._nex = q._next
-
datum = p._datum
-
return datum
-
def setItem(self, pos, item):
-
i = 0
-
p = self._head
-
while p != None and i < pos -1:
-
p = p._next
-
i += 1
-
if p == None or i > post-1:
-
return -1
-
p._datum = item
-
return 1
-
def find(self, pos, item):
-
i = 0
-
p = self._head
-
while p != None and i < pos -1:
-
if p._datum == item:
-
return 1
-
p = p._next
-
i += 1
-
return -1
-
def empty(self):
-
if self._head == None:
-
return 1
-
return 0
-
def size(self):
-
i = 0
-
p = self._head
-
while p != None and i < pos -1:
-
p = p._next
-
i += 1
-
return i
-
-
def clear(self):
-
self._head = None
-
self._tail = None
-
-
-
test = LinkedList()
-
test.prepend('test0')
-
print test.insert(1, 'test')
-
print test.head.datum
- print test.head.next.datum