Circular linked list in Data structure YASH PAL, 22 May 202028 May 2024 In Data Structure A circular linked list is a list in which there is no None link. and the link of the last node refers to the first node. each node has a successor and all the nodes form a circle. to perform the operations on a circular linked list we generally and will need to store the reference of the last node of the list. because if we store the reference of the first node then we don’t perform operations such as insertion, deletion, etc in constant time. and we need to traverse the whole linked list.so to perform all the operations in constant time we always store the reference of the last node. we also use the circular linked list to implement the other data structure like the implementation of a queue. because the insertions and deletions in the queue take constant time using a circular linked list. Python program to Implement Circular Linked list class Node(object): def __init__(self, value): self.info = value self.link = None class CircularLinkedList(object): def __init__(self): self.last = None def display_list(self): if self.last == None: print("List is empty\n") return p = self.last.link while True: print(p.info, " ", end='') p = p.link if p == self.last.link: break print() def insert_in_beginning(self, data): temp = Node(data) temp.link = self.last.link self.last.link = temp def insert_in_empty_list(self, data): temp = Node(data) self.last = temp self.last.link = self.last def insert_at_end(self,data): temp = Node(data) temp.link = self.last.link self.last.link = temp self.last = temp def create_list(self): n = int(input("Enter the number of nodes : ")) if n == 0: return data = int(input("Enter the element to be inserted : ")) self.insert_in_empty_list(data) for i in range(n-1): data = int(input("Enter the element to be inserted : ")) self.insert_at_end(data) def insert_after(self, data, x): p = self.last.link while True: if p.info == x: break p = p.link if p == self.last.link: break if p == self.last.link and p.info != x: print(x, " not present in the list") else: temp = Node(data) temp.link = p.link p.link = temp if p == self.last: self.last = temp def delete_first_node(self): if self.last is None: return if self.last.link == self.last: self.last = None return self.last.link = self.last.link.link def delete_last_node(self): if self.last is None: return if self.last.link == self.last: self.last = None return p = self.last.link while p.link != self.last: p = p.link p.link = self.last.link self.last = p def delete_node(self,x): if self.last is None: return if self.last.link == self.last and self.last.info == x: self.last = None return if self.last.link.info == x: self.last.link == self.last.link.link return p = self.last.link while p.link != self.last.link: if p.link.info == x: break p = p.link if p.link == self.last.link: print(x, " not found in the list") else: p.link = p.link.link if self.last.info == x: self.last = p ################################################# list = CircularLinkedList() list.create_list() while True: print("1. Display list") print("2. Insert in empty list") print("3. Insert a node in the beginning of the list") print("4. Insert a node at the end of the list") print("5. Insert a node after a specified node") print("6. Delete first node") print("7. Delete last node") print("8. Delete any node") print("9. Quite") option = int(input("Enter your choice : ")) if option == 1: list.display_list() elif option == 2: data = int(input("Enter the element to be inserted : ")) list.insert_in_empty_list(data) elif option == 3: data = int(input("Enter the element to be inserted : ")) list.insert_in_beginning(data) elif option == 4: data = int(input("Enter the element to be inserted : ")) list.insert_at_end(data) elif option == 5: data = int(input("Enter the element to be inserted : ")) x = int(input("Enter the element after which to insert : ")) list.insert_after(data,x) elif option == 6: list.delete_first_node() elif option == 7: list.delete_last_node() elif option == 8: data = int(input("Enter the element to be deleted : ")) list.delete_node(data) elif option == 9: break else: print("Wrong option") print() Computer Science Tutorials Data Structures Tutorials computer scienceData Structure