File tree Expand file tree Collapse file tree 1 file changed +116
-0
lines changed Expand file tree Collapse file tree 1 file changed +116
-0
lines changed Original file line number Diff line number Diff line change
1
+ class _Node :
2
+ __slots__ = '_element' , '_next'
3
+
4
+ def __init__ (self , element , next ):
5
+ self ._element = element
6
+
7
+ self ._next = next
8
+ class LinkedList :
9
+ def __init__ (self ):
10
+ self ._head = None
11
+ self ._tail = None
12
+ self ._size = 0
13
+
14
+ def __len__ (self ):
15
+ return self ._size
16
+
17
+ def isempty (self ):
18
+ return self ._size == 0
19
+
20
+ def addlast (self , e ):
21
+ newest = _Node (e , None )
22
+ if self .isempty ():
23
+ self ._head = newest
24
+ else :
25
+ self ._tail ._next = newest
26
+ self ._tail = newest
27
+ self ._size += 1
28
+
29
+ def addfirst (self , e ):
30
+ newest = _Node (e , None )
31
+ if self .isempty ():
32
+ self ._head = newest
33
+ self ._tail = newest
34
+ else :
35
+ newest ._next = self ._head
36
+ self ._head = newest
37
+ self ._size += 1
38
+
39
+ def addany (self , e , position ):
40
+ newest = _Node (e , None )
41
+ p = self ._head
42
+ i = 1
43
+ while i < position - 1 :
44
+ p = p ._next
45
+ i = i + 1
46
+ newest ._next = p ._next
47
+ p ._next = newest
48
+ self ._size += 1
49
+
50
+ def removefirst (self ):
51
+ if self .isempty ():
52
+ print ('List is empty' )
53
+ return
54
+ e = self ._head ._element
55
+ self ._head = self ._head ._next
56
+ self ._size -= 1
57
+ if self .isempty ():
58
+ self ._tail = None
59
+ return e
60
+
61
+ def removelast (self ):
62
+ if self .isempty ():
63
+ print ('List is empty' )
64
+ return
65
+ p = self ._head
66
+ i = 1
67
+ while i < len (self ) - 1 :
68
+ p = p ._next
69
+ i = i + 1
70
+ self ._tail = p
71
+ p = p ._next
72
+ e = p ._element
73
+ self ._tail ._next = None
74
+ self ._size -= 1
75
+ return e
76
+
77
+ def removeany (self , position ):
78
+ p = self ._head
79
+ i = 1
80
+ while i < position - 1 :
81
+ p = p ._next
82
+ i = i + 1
83
+ e = p ._next ._element
84
+ p ._next = p ._next ._next
85
+ self ._size -= 1
86
+ return e
87
+
88
+ def display (self ):
89
+ p = self ._head
90
+ while p :
91
+ print (p ._element ,end = '-->' )
92
+ p = p ._next
93
+ print ()
94
+
95
+ def search (self ,key ):
96
+ p = self ._head
97
+ index = 0
98
+ while p :
99
+ if p ._element == key :
100
+ return index
101
+ p = p ._next
102
+ index = index + 1
103
+ return - 1
104
+
105
+ L = LinkedList ()
106
+ L .addlast (7 )
107
+ L .addlast (4 )
108
+ L .addlast (12 )
109
+ L .addlast (8 )
110
+ L .addlast (3 )
111
+ L .display ()
112
+ print ('Size:' ,len (L ))
113
+ ele = L .removeany (3 )
114
+ L .display ()
115
+ print ('Size:' ,len (L ))
116
+ print ('Removed Element:' ,ele )
You can’t perform that action at this time.
0 commit comments