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 b52361a

Browse files
Added Circular Linked List
1 parent db67a04 commit b52361a

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

‎Circular Linked List/circularLL.py‎

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
import os
2+
3+
from typing_extensions import TypeAlias
4+
5+
class _Node:
6+
__slots__ = '_element', '_link'
7+
8+
def __init__(self, element, link):
9+
self._element = element
10+
self._link = link
11+
12+
class CicularLL:
13+
14+
def __init__(self):
15+
self._head = None
16+
self._tail = None
17+
self._size = 0
18+
19+
def __len__(self):
20+
return self._size
21+
22+
def isempty(self):
23+
return self._size == 0
24+
25+
def addLast(self, e):
26+
newest = _Node(e, None)
27+
28+
if self.isempty():
29+
self._head = newest
30+
newest._link = self._head
31+
else:
32+
newest._link = self._tail._link
33+
self._tail._link = newest
34+
35+
self._tail = newest
36+
self._size += 1
37+
38+
def addFirst(self, e):
39+
newest = _Node(e, None)
40+
41+
if self.isempty():
42+
newest._link = self._head
43+
self._head = newest
44+
self._tail = newest
45+
else:
46+
newest._link = self._head
47+
self._tail._link = newest
48+
self._head = newest
49+
self._size += 1
50+
51+
52+
def display(self):
53+
if self.isempty() == 0:
54+
p = self._head
55+
while True:
56+
print(p._element, end='-->')
57+
p = p._link
58+
if p == self._head:
59+
break
60+
print(f'({p._element} head)')
61+
else:
62+
print("Empty")
63+
64+
#########################################################################
65+
66+
67+
def options():
68+
options_list = ['Add Last', 'Add First', 'Add Anywhere',
69+
'Remove First', 'Remove Last', 'Remove Anywhere',
70+
'Display List', 'Exit']
71+
72+
print("MENU")
73+
for i, option in enumerate(options_list):
74+
print(f'{i + 1}. {option}')
75+
76+
choice = int(input("Enter choice: "))
77+
return choice
78+
79+
80+
def switch_case(choice):
81+
82+
os.system('cls')
83+
if choice == 1:
84+
elem = int(input("Enter Item: "))
85+
CL.addLast(elem)
86+
print("Added Item at Last!\n\n")
87+
88+
elif choice == 2:
89+
elem = int(input("Enter Item: "))
90+
CL.addFirst(elem)
91+
print("Added Item at First!\n\n")
92+
93+
elif choice == 3:
94+
elem = int(input("Enter Item: "))
95+
index = int(input("Enter Index: "))
96+
CL.addAnywhere(elem, index)
97+
print(f"Added Item at index {index}!\n\n")
98+
99+
elif choice == 4:
100+
print("Removed Element from First:", CL.removeFirst())
101+
102+
elif choice == 5:
103+
print("Removed Element from last:", CL.removeLast())
104+
105+
elif choice == 6:
106+
index = int(input("Enter Index: "))
107+
CL.removeAnywhere(index)
108+
print(f"Removed Item at index {index}!\n\n")
109+
elif choice == 7:
110+
print("List: ", end='')
111+
CL.display()
112+
print("\n")
113+
114+
elif choice == 8:
115+
import sys
116+
sys.exit()
117+
118+
119+
CL = CicularLL()
120+
while True:
121+
choice = options()
122+
switch_case(choice)

0 commit comments

Comments
(0)

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