#! /usr/bin/env python ###
### Linked List python implementation
###
### @reference Data Structures and Algorithm Analysis in C:Second Edition : Mark Allen Weiss
### @date Tue Sep 29 20:51:55 CST 2015 #node structure
class Node(object): def __init__(self, value, p=None):
self.element = value
self.pNext = p class LinkedList(object): def __init__(self):
self.head = None def makeEmpty(self):
self.head = None def isEmpty(self):
return self.head == None def find(self, value):
if self.isEmpty():
print 'the linked list is empty !'
return
p = self.head
while p != None:
if p.element == value:
#the index of the target in linkedlist
return p
p = p.pNext
return -1 def insert(self, value):
item = Node(value)
if self.isEmpty():
self.head = item
else:
p = self.head
while p.pNext != None:
p = p.pNext
p.pNext = item def deleteList(self):
if self.isEmpty():
print 'the linked list is empty !'
else:
p = self.head.pNext
self.head = None
while p != None:
tmp = p.pNext
p = None
p=tmp def delete(self, target):
if self.isEmpty():
print 'the linked list is empty !'
else:
p = self.findPrevious(target)
if not self.isLast(p):
tmpNode = p.pNext
p.pNext = tmpNode.pNext
tmpNode = None
else:
p.pNext = None def isLast(self,p):
return p.pNext == None def findPrevious(self, target):
if self.isEmpty():
print 'the linked list is empty !'
else:
p = self.head
while p != None and p.pNext.element != target:
p = p.pNext
return p def debug(self):
if self.isEmpty():
print 'the linked list is empty !'
else:
p = self.head
while p != None:
print p.element
p = p.pNext
if p == None:
print '-------------' def initLinkedList(self,lists):
for item in lists:
self.insert(item) obj=LinkedList()
lists=[1,2,3,4,5,6,10,17]
obj.initLinkedList(lists)
#rs=obj.isEmpty()
#print rs
#rs=obj.find(17)
#print rs
#rs=obj.isLast(rs)
#print rs
#obj.debug()
#rs=obj.find(17)
#rs=obj.find(14)
#rs=obj.findPrevious(10)
#print rs
#print rs.element
#obj.delete(10)
obj.deleteList()
obj.debug()