1 #!/usr/bin/python
2
3 class Node(object):
4 def __init__(self,value,next=None):
5 self.value,self.next=value,next
6
7 class Linklist(object):
8 def __init__(self):
9 self.head=None
10 def initlist(self,data):
11 self.head=Node(0)
12 p=self.head
13
14 for i in data:
15 node=Node(i)
16 p.next=node
17 p=p.next
18
19 def show(self):
20 p=self.head.next
21 while p!=None:
22 print p.value
23 p=p.next
24 def getlength(self):
25 p=self.head
26 length=0
27
28 while p.next !=None:
29 length+=1
30 p=p.next
31 return length
32
33 def insert(self,index,value):
34 if index<0 or index>self.getlength():
35 print "Index is Error!"
36 return
37 p=self.head
38 j=0
39 while p.next !=None and j < index:
40 p=p.next
41 j+=1
42 node=Node(value,p.next)
43 p.next=node
44
45
46 def remove(self,index):
47 if index<0 or index > self.getlength():
48 print "Index is Error!"
49 return
50
51 p=self.head
52 j=0
53 while p.next !=None and j<index:
54 p=p.next
55 j+=1
56 next=p.next.next
57
58 def checkin(self,value):
59 p=self.head
60 flag=-1
61 while p.next != None:
62 if p.next.value==value:
63 flag=1
64 return flag
65 p=p.next
66 return flag
67
68 def replace(self,index,value):
69 p=self.head.next
70 i=0
71 while i<index:
72 p=p.next
73 i+=1
74 p.value=value
75
76 def getitem(self,index):
77 p=self.head.next
78 j=0
79 while p!=None and j<index:
80 j+=1
81 p=p.next
82 return p.value
83
84 def is_empty(self):
85 if self.getlength()==0:
86 return True
87 else:
88 return False
89
90 def __getitem__(self,key):
91 if self.is_empty() or key>=self.getlength():
92 print "Index is Error!"
93 return
94 else:
95 return self.getitem(key)
96 def __setitem__(self,key,value):
97 if self.is_empty() or key>=self.getlength():
98 print "Index is Error!"
99 return
100 else:
101 return self.replace(key,value)