11import os
2- from typing import Sized
3- 42class _Node :
53 __slots__ = '_element' , '_link'
64
75 def __init__ (self , element , link ):
86 self ._element = element
97 self ._link = link
108
9+ 1110class 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+ 84137def 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+ 94150def 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
128200L = LinkedList ()
0 commit comments