Movatterモバイル変換


[0]ホーム

URL:


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
This repository was archived by the owner on Sep 7, 2025. It is now read-only.
/pythonPublic archive

Commitad7fd09

Browse files
Insertion and deletion in cicrcular single linked list
1 parentf051734 commitad7fd09

File tree

1 file changed

+116
-0
lines changed

1 file changed

+116
-0
lines changed
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
classNode:
2+
def__init__(self,data):
3+
self.data=data
4+
self.next=None
5+
6+
7+
classCircularLinkedList:
8+
def__init__(self):
9+
self.head=None
10+
11+
defget_node(self,index):
12+
ifself.headisNone:
13+
returnNone
14+
current=self.head
15+
foriinrange(index):
16+
current=current.next
17+
ifcurrent==self.head:
18+
returnNone
19+
returncurrent
20+
21+
defget_prev_node(self,ref_node):
22+
ifself.headisNone:
23+
returnNone
24+
current=self.head
25+
whilecurrent.next!=ref_node:
26+
current=current.next
27+
returncurrent
28+
29+
definsert_after(self,ref_node,new_node):
30+
new_node.next=ref_node.next
31+
ref_node.next=new_node
32+
33+
definsert_before(self,ref_node,new_node):
34+
prev_node=self.get_prev_node(ref_node)
35+
self.insert_after(prev_node,new_node)
36+
37+
definsert_at_end(self,new_node):
38+
ifself.headisNone:
39+
self.head=new_node
40+
new_node.next=new_node
41+
else:
42+
self.insert_before(self.head,new_node)
43+
44+
definsert_at_beg(self,new_node):
45+
self.insert_at_end(new_node)
46+
self.head=new_node
47+
48+
defremove(self,node):
49+
ifself.head.next==self.head:
50+
self.head=None
51+
else:
52+
prev_node=self.get_prev_node(node)
53+
prev_node.next=node.next
54+
ifself.head==node:
55+
self.head=node.next
56+
57+
defdisplay(self):
58+
ifself.headisNone:
59+
return
60+
current=self.head
61+
whileTrue:
62+
print(current.data,end=' ')
63+
current=current.next
64+
ifcurrent==self.head:
65+
break
66+
67+
68+
a_cllist=CircularLinkedList()
69+
70+
print('Menu')
71+
print('insert <data> after <index>')
72+
print('insert <data> before <index>')
73+
print('insert <data> at beg')
74+
print('insert <data> at end')
75+
print('remove <index>')
76+
print('quit')
77+
78+
whileTrue:
79+
print('The list: ',end='')
80+
a_cllist.display()
81+
print()
82+
do=input('What would you like to do? ').split()
83+
84+
operation=do[0].strip().lower()
85+
86+
ifoperation=='insert':
87+
data=int(do[1])
88+
position=do[3].strip().lower()
89+
new_node=Node(data)
90+
suboperation=do[2].strip().lower()
91+
ifsuboperation=='at':
92+
ifposition=='beg':
93+
a_cllist.insert_at_beg(new_node)
94+
elifposition=='end':
95+
a_cllist.insert_at_end(new_node)
96+
else:
97+
index=int(position)
98+
ref_node=a_cllist.get_node(index)
99+
ifref_nodeisNone:
100+
print('No such index.')
101+
continue
102+
ifsuboperation=='after':
103+
a_cllist.insert_after(ref_node,new_node)
104+
elifsuboperation=='before':
105+
a_cllist.insert_before(ref_node,new_node)
106+
107+
elifoperation=='remove':
108+
index=int(do[1])
109+
node=a_cllist.get_node(index)
110+
ifnodeisNone:
111+
print('No such index.')
112+
continue
113+
a_cllist.remove(node)
114+
115+
elifoperation=='quit':
116+
break

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp