Skip to content

Commit 96f38d4

Browse files
committed
Linked List
1 parent abc5b34 commit 96f38d4

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed

linked list/LLRemoveAnyElement.py

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
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)

0 commit comments

Comments
 (0)