You are on page 1of 18

30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

 

C++ Program To Implement Circular Singly


Linked List
« Prev Next »

This C++ Program demonstrates circular single linked list.

Here is source code of the C++ Program to demonstrate circular single linked list. The C++
program is successfully compiled and run on a Linux system. The program output is also shown
below.

1. /*
2.  * C++ Program to Implement Circular Linked List
3.  */
4. #include<iostream>
5. #include<cstdio>
6. #include<cstdlib>
7. using namespace std;
8. /*
9.  * Node Declaration
10.  */
11. struct node
12. {
13. int info; 
14. struct node *next;
code.whitehatjr.com
15. }*last;
OPEN
#1 Coding Classes For Kids
16.  
17. /*

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 1/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

18.  * Class Declaration


19.  */
20. class circular_llist
21. {
22. public:
23. void create_node(int value);
24. void add_begin(int value);
25. void add_after(int value, int position);
26. void delete_element(int value);
27. void search_element(int value);
28. void display_list();
29. void update();
30. void sort();
31. circular_llist()
32. {
33. last = NULL;
34. }
35. };
36.  
37. /*
38.  * Main :contains menu
39.  */
40. int main()
41. {
42. int choice, element, position;
43. circular_llist cl;
44. while (1)
45. {
46. cout<<endl<<"---------------------------"<<endl;
47. cout<<endl<<"Circular singly linked list"<<endl;
48. cout<<endl<<"---------------------------"<<endl;
49. cout<<"1.Create Node"<<endl;
50. cout<<"2.Add at beginning"<<endl;
51. cout<<"3.Add after"<<endl;
52. cout<<"4.Delete"<<endl;
53. cout<<"5.Search"<<endl;
54. cout<<"6.Display"<<endl;
55. cout<<"7.Update"<<endl;
56. cout<<"8.Sort"<<endl;
57. cout<<"9.Quit"<<endl;
58. cout<<"Enter your choice : ";
59. cin>>choice;
60. switch(choice)
61. {
62. case 1:
63. cout<<"Enter the element: ";
64. cin>>element;

65. cl.create_node(element);
66. cout<<endl;
67. break;
68. case 2:
69. cout<<"Enter the element: ";

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 2/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

70. cin>>element;
71. cl.add_begin(element);
72. cout<<endl;
73. break;
74. case 3:
75. cout<<"Enter the element: ";
76. cin>>element;
77. cout<<"Insert element after position: ";
78. cin>>position;
79. cl.add_after(element, position);
80. cout<<endl;
81. break;
82. case 4:
83. if (last == NULL)
84. {
85. cout<<"List is empty, nothing to delete"<<endl;
86. break;
87. }
88. cout<<"Enter the element for deletion: ";
89. cin>>element;
90. cl.delete_element(element);
91. cout<<endl;
92. break;
93. case 5:
94. if (last == NULL)
95. {
96. cout<<"List Empty!! Can't search"<<endl;
97. break;
98. }
99. cout<<"Enter the element to be searched: ";
100. cin>>element;
101. cl.search_element(element);
102. cout<<endl;
103. break;
104. case 6:
105. cl.display_list();
106. break;
107. case 7:
108. cl.update();
109. break;
110. case 8:
111. cl.sort();
112. break;
113. case 9:
114. exit(1);
115. break;
116. default:

117. cout<<"Wrong choice"<<endl;
118. }
119. }
120. return 0;
121. }

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 3/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

122.  
123. /*
124.  * Create Circular Link List
125.  */
126. void circular_llist::create_node(int value)
127. {
128. struct node *temp;
129. temp = new(struct node);
130. temp->info = value;
131. if (last == NULL)
132. {
133. last = temp;
134. temp->next = last;
135. }
136. else
137. {
138. temp->next = last->next;
139. last->next = temp;
140. last = temp;
141. }
142. }
143.  
144. /*
145.  * Insertion of element at beginning
146.  */
147. void circular_llist::add_begin(int value)
148. {
149. if (last == NULL)
150. {
151. cout<<"First Create the list."<<endl;
152. return;
153. }
154. struct node *temp;
155. temp = new(struct node);
156. temp->info = value;
157. temp->next = last->next;
158. last->next = temp;
159. }
160.  
161. /*
162.  * Insertion of element at a particular place
163.  */
164. void circular_llist::add_after(int value, int pos)
165. {
166. if (last == NULL)
167. {
168. cout<<"First Create the list."<<endl;

169. return;
170. }
171. struct node *temp, *s;
172. s = last->next;
173. for (int i = 0;i < pos-1;i++)

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 4/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

174. {
175. s = s->next;
176. if (s == last->next)
177. {
178. cout<<"There are less than ";
179. cout<<pos<<" in the list"<<endl;
180. return;
181. }
182. }
183. temp = new(struct node);
184. temp->next = s->next;
185. temp->info = value;
186. s->next = temp;
187. /*Element inserted at the end*/
188. if (s == last)
189. {
190. last=temp;
191. }
192. }
193.  
194. /*
195.  * Deletion of element from the list
196.  */
197. void circular_llist::delete_element(int value)
198. {
199. struct node *temp, *s;
200. s = last->next;
201. /* If List has only one element*/
202. if (last->next == last && last->info == value)
203. {
204. temp = last;
205. last = NULL;
206. free(temp);
207. return;
208. }
209. if (s->info == value) /*First Element Deletion*/
210. {
211. temp = s;
212. last->next = s->next;
213. free(temp);
214. return;
215. }
216. while (s->next != last)
217. {
218. /*Deletion of Element in between*/
219. if (s->next->info == value)
220. {

221. temp = s->next;
222. s->next = temp->next;
223. free(temp);
224. cout<<"Element "<<value;
225. cout<<" deleted from the list"<<endl;

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 5/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

226. return;
227. }
228. s = s->next;
229. }
230. /*Deletion of last element*/
231. if (s->next->info == value)
232. {
233. temp = s->next;
234. s->next = last->next;
235. free(temp);
236. last = s;
237. return;
238. }
239. cout<<"Element "<<value<<" not found in the list"<<endl;
240. }
241.  
242. /*
243.  * Search element in the list
244.  */
245. void circular_llist::search_element(int value)
246. {
247. struct node *s;
248. int counter = 0;
249. s = last->next;
250. while (s != last)
251. {
252. counter++;
253. if (s->info == value)
254. {
255. cout<<"Element "<<value;
256. cout<<" found at position "<<counter<<endl;
257. return;
258. }
259. s = s->next;
260. }
261. if (s->info == value)
262. {
263. counter++;
264. cout<<"Element "<<value;
265. cout<<" found at position "<<counter<<endl;
266. return;
267. }
268. cout<<"Element "<<value<<" not found in the list"<<endl;
269. }
270.  
271. /*
272.  * Display Circular Link List

273.  */
274. void circular_llist::display_list()
275. {
276. struct node *s;
277. if (last == NULL)

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 6/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

278. {
279. cout<<"List is empty, nothing to display"<<endl;
280. return;
281. }
282. s = last->next;
283. cout<<"Circular Link List: "<<endl;
284. while (s != last)
285. {
286. cout<<s->info<<"->";
287. s = s->next;
288. }
289. cout<<s->info<<endl;
290. }
291.  
292. /*
293.  * Update Circular Link List
294.  */
295. void circular_llist::update()
296. {
297. int value, pos, i;
298. if (last == NULL)
299. {
300. cout<<"List is empty, nothing to update"<<endl;
301. return;
302. }
303. cout<<"Enter the node position to be updated: ";
304. cin>>pos;
305. cout<<"Enter the new value: ";
306. cin>>value;
307. struct node *s;
308. s = last->next;
309. for (i = 0;i < pos - 1;i++)
310. {
311. if (s == last)
312. {
313. cout<<"There are less than "<<pos<<" elements.";
314. cout<<endl;
315. return;
316. }
317. s = s->next;
318. }
319. s->info = value;
320. cout<<"Node Updated"<<endl;
321. }
322.  
323. /*
324.  * Sort Circular Link List

325.  */
326. void circular_llist::sort()
327. {
328. struct node *s, *ptr;
329. int temp;

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 7/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

330. if (last == NULL)


331. {
332. cout<<"List is empty, nothing to sort"<<endl;
333. return;
334. }
335. s = last->next;
336. while (s != last)
337. {
338. ptr = s->next;
339. while (ptr != last->next)
340. {
341. if (ptr != last->next)
342. {
343. if (s->info > ptr->info)
344. {
345. temp = s->info;
346. s->info = ptr->info;
347. ptr->info = temp;
348. }
349. }
350. else
351. {
352. break;
353. }
354. ptr = ptr->next;
355. }
356. s = s->next;
357. }
358. }

advertisement

$ g++ circular_llist.cpp
$ a.out

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 8/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 4
List is empty, nothing to delete
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 5
List is empty, nothing to search
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update

8.Sort
9.Quit
Enter your choice : 6
List is empty, nothing to display
 

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 9/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 7
List is empty, nothing to update
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 8
List is empty, nothing to sort
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort

9.Quit
Enter your choice : 1
Enter the element: 100
 
 

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 10/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 2
Enter the element: 200
 
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 6
Circular Link List:
200->100
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display

7.Update
8.Sort
9.Quit
Enter your choice : 3
Enter the element: 50

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 11/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

Insert element after position: 2


 
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 6
Circular Link List:
200->100->50
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 3
Enter the element: 150
Insert element after position: 3
 
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning

3.Add after
4.Delete
5.Search
6.Display
7.Update

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 12/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

8.Sort
9.Quit
Enter your choice : 6
Circular Link List:
200->100->50->150
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 3
Enter the element: 1000
Insert element after position: 50
There are less than 50 in the list
 
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 4
Enter the element for deletion: 150
 
 
---------------------------------
 
Operations on Circular singly linked list

 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 13/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 6
Circular Link List:
200->100->50
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 5
Enter the element to be searched: 100
Element 100 found at position 2
 
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 7
Enter the node position to be updated: 1
Enter the new value: 1010
Node Updated

 
---------------------------------
 
Operations on Circular singly linked list
 

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 14/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 6
Circular Link List:
1010->100->50
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 8
 
---------------------------------
 
Operations on Circular singly linked list
 
---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 6
Circular Link List:
50->100->1010

 
---------------------------------
 
Operations on Circular singly linked list
 

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 15/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

---------------------------------
1.Create Node
2.Add at beginning
3.Add after
4.Delete
5.Search
6.Display
7.Update
8.Sort
9.Quit
Enter your choice : 9
 
 
------------------
(program exited with code: 1)
Press return to continue

Sanfoundry Global Education & Learning Series – 1000 C++ Programs.

advertisement

If you wish to look at all C++ Programming examples, go to C++ Programs.

Participate in the Sanfoundry Certi cation contest to get free Certi cate of Merit. Join our social
networks below and stay updated with latest contests, videos, internships and jobs!

Telegram | Youtube | LinkedIn | Instagram | Facebook | Twitter | Pinterest

« Prev - C++ Program To Implement Singly Linked List


» Next - C++ Program to Traverse a Graph using DFS 

advertisement

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 16/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

Recommended Posts:
1. Simple Java Programs
2. C++ Algorithms, Problems & Programming Examples
3. Data Structure Questions and Answers
4. C# Programming Examples on Sorting
5. C Programming Examples on Arrays
6. C Programming Examples on Strings
7. C# Programming Examples on Inheritance
8. Java Algorithms, Problems & Programming Examples
9. C Programming Examples
10. C# Programming Examples
11. C Programming Examples on Trees
12. C Programming Examples on Data-Structures
13. C Programming Examples on Stacks & Queues
14. Java Programming Examples on Data-Structures
15. C Programming Examples using Recursion
16. C Programming Examples without using Recursion
17. C++ Programming Examples on Data-Structures
18. C# Programming Examples on Data Structures
19. Python Programming Examples on Linked Lists
20. C Programming Examples on Linked List

advertisement

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 17/18
30/09/2020 C++ Program To Implement Circular Singly Linked List - Sanfoundry

Manish Bhojasia, a technology veteran with 20+ years @ Cisco & Wipro, is
Founder and CTO at Sanfoundry. He is Linux Kernel Developer & SAN
Architect and is passionate about competency developments in these areas.
He lives in Bangalore and delivers focused training sessions to IT
professionals in Linux Kernel, Linux Debugging, Linux Device Drivers, Linux
Networking, Linux Storage, Advanced C Programming, SAN Storage
Technologies, SCSI Internals & Storage Protocols such as iSCSI & Fiber
Channel. Stay connected with him @ LinkedIn

Subscribe Sanfoundry Newsletter and Posts

Name*

Email*

Subscribe

About | Certi cations | Internships | Jobs | Privacy Policy | Terms | Copyright | Contact

     

© 2011-2020 Sanfoundry. All Rights Reserved.

https://www.sanfoundry.com/cpp-program-implement-circular-singly-linked-list/ 18/18

You might also like