Skip to content

Commit 397ecaf

Browse files
committed
Linked List
1 parent 81268fa commit 397ecaf

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed

linked list/LLRemoveLastElement.py

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
class _Node:
2+
__slots__ = '_element', '_next'
3+
4+
def __init__(self, element, next):
5+
self._element = element
6+
self._next = next
7+
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 display(self):
78+
p = self._head
79+
while p:
80+
print(p._element,end='-->')
81+
p = p._next
82+
print()
83+
84+
def search(self,key):
85+
p = self._head
86+
index = 0
87+
while p:
88+
if p._element == key:
89+
return index
90+
p = p._next
91+
index = index + 1
92+
return -1
93+
94+
L = LinkedList()
95+
L.addlast(7)
96+
L.addlast(4)
97+
L.addlast(12)
98+
L.addlast(8)
99+
L.addlast(3)
100+
L.display()
101+
print('Size:',len(L))
102+
ele = L.removelast()
103+
L.display()
104+
print('Size:',len(L))
105+
print('Element Removed',ele)

0 commit comments

Comments
 (0)