Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit db67a04

Browse files
Added Deletion Operations
1 parent 1aa9f37 commit db67a04

File tree

1 file changed

+85
-13
lines changed

1 file changed

+85
-13
lines changed

‎Linked List/linkedlist.py‎

Lines changed: 85 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import os
2-
from typing import Sized
3-
42
class _Node:
53
__slots__ = '_element', '_link'
64

75
def __init__(self, element, link):
86
self._element = element
97
self._link = link
108

9+
1110
class LinkedList:
11+
1212
def __init__(self):
1313
self._head = None
1414
self._tail = None
@@ -19,9 +19,9 @@ def __len__(self):
1919

2020
def isempty(self):
2121
return self._size == 0
22-
22+
2323
def addLast(self, e):
24-
newest = _Node(e,None)
24+
newest = _Node(e,None)
2525

2626
if self.isempty():
2727
self._head = newest
@@ -32,7 +32,6 @@ def addLast(self, e):
3232
self._size += 1
3333

3434
def addFirst(self, e):
35-
3635
newest = _Node(e, None)
3736

3837
if self.isempty():
@@ -44,7 +43,6 @@ def addFirst(self, e):
4443
self._size += 1
4544

4645
def addAnywhere(self, e, index):
47-
4846
newest = _Node(e, None)
4947

5048
i = index - 1
@@ -59,15 +57,69 @@ def addAnywhere(self, e, index):
5957
p._link = newest
6058
self._size += 1
6159

60+
def removeFirst(self):
61+
if self.isempty():
62+
print("List is Empty. Cannot perform deletion operation.")
63+
return
64+
65+
e = self._head._element
66+
self._head = self._head._link
67+
self._size = self._size - 1
68+
69+
if self.isempty():
70+
self._tail = None
71+
72+
return e
73+
74+
def removeLast(self):
75+
if self.isempty():
76+
print("List is Empty. Cannot perform deletion operation.")
77+
return
78+
79+
p = self._head
80+
81+
if p._link == None:
82+
e = p._element
83+
self._head = None
84+
else:
85+
while p._link._link != None:
86+
p = p._link
87+
e = p._link._element
88+
p._link = None
89+
self._tail = p
90+
91+
self._size = self._size - 1
92+
return e
93+
94+
def removeAnywhere(self, index):
95+
96+
p = self._head
97+
i = index - 1
98+
99+
if index == 0:
100+
return self.removeFirst()
101+
elif index == self._size - 1:
102+
return self.removeLast()
103+
else:
104+
for x in range(i):
105+
p = p._link
106+
e = p._link._element
107+
p._link = p._link._link
108+
109+
self._size -= 1
110+
return e
111+
62112
def display(self):
63113
if self.isempty() == 0:
64114
p = self._head
65115
while p:
66116
print(p._element, end='-->')
67117
p = p._link
68118
print("NULL")
119+
print(
120+
f"Head : {self._head._element}, Tail : {self._tail._element}")
69121
else:
70-
print("List is Empty")
122+
print("Empty")
71123

72124
def search(self, key):
73125
p = self._head
@@ -81,48 +133,68 @@ def search(self, key):
81133

82134
###############################################################################
83135

136+
84137
def options():
85-
options_list = ['Add item', 'Add First', 'Add Anywhere', 'Display List', 'Print Size', 'Search', 'Exit']
138+
options_list = ['Add Last', 'Add First', 'Add Anywhere',
139+
'Remove First', 'Remove Last', 'Remove Anywhere',
140+
'Display List', 'Print Size', 'Search', 'Exit']
86141

87142
print("MENU")
88143
for i, option in enumerate(options_list):
89-
print(f'{i + 1}. {option}')
144+
print(f'{i + 1}. {option}')
90145

91146
choice = int(input("Enter choice: "))
92147
return choice
93148

149+
94150
def switch_case(choice):
95151

96152
os.system('cls')
97153
if choice == 1:
98154
elem = int(input("Enter Item: "))
99155
L.addLast(elem)
100156
print("Added Item at Last!\n\n")
157+
101158
elif choice == 2:
102159
elem = int(input("Enter Item: "))
103160
L.addFirst(elem)
104161
print("Added Item at First!\n\n")
162+
105163
elif choice == 3:
106164
elem = int(input("Enter Item: "))
107165
index = int(input("Enter Index: "))
108166
L.addAnywhere(elem, index)
109167
print(f"Added Item at index {index}!\n\n")
168+
110169
elif choice == 4:
170+
print("Removed Element from First:", L.removeFirst())
171+
172+
elif choice == 5:
173+
print("Removed Element from last:", L.removeLast())
174+
175+
elif choice == 6:
176+
index = int(input("Enter Index: "))
177+
L.removeAnywhere(index)
178+
print(f"Removed Item at index {index}!\n\n")
179+
elif choice == 7:
111180
print("List: ", end='')
112181
L.display()
113182
print("\n")
114-
elif choice == 5:
183+
184+
elif choice == 8:
115185
print("Size:", len(L))
116186
print("\n")
117-
elif choice == 6:
187+
188+
elif choice == 9:
118189
key = int(input("Enter item to search: "))
119190
if L.search(key) >= 0:
120191
print(f"Item {key} found at index position {L.search(key)}\n\n")
121192
else:
122193
print("Item not in the list\n\n")
123194

124-
elif choice == 7:
125-
exit
195+
elif choice == 10:
196+
import sys
197+
sys.exit()
126198

127199

128200
L = LinkedList()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /