Python program to search an element in a Circular Linked List
In this program, we create a circular linked list and search a node in the list.
- 9->5->2->7->3
Consider, above example. Suppose we need to search for node 5. To solve this problem, we will iterate through the list and compare each node with 5. If a match is found, we will set the flag to true and prints out the position of the node 5. In this example, node 5 is present at position 2.
ALGORITHM:
- Define a Node class which represents a node in the list. It has two properties data and next which will point to the next node.
- Define another class for creating a circular linked list, and it has two nodes: head and tail.
- search() will search for a node in the list:
- Variable i will keep track of the position of the searched node.
- The variable flag will store boolean value false.
- Current will point to head node.
- Iterate through the loop by incrementing current to current.next and i to i + 1.
- Compare each node’s data with the searched node if a match is found, set the flag to true.
- If the flag is true, prints the position of the searched node.
- Else, print the message “Element is not present in the list”.
PROGRAM:
- #Represents the node of list.
- class Node:
- def __init__(self,data):
- self.data = data;
- self.next = None;
- class CreateList:
- #Declaring head and tail pointer as null.
- def __init__(self):
- self.head = Node(None);
- self.tail = Node(None);
- self.head.next = self.tail;
- self.tail.next = self.head;
- #This function will add the new node at the end of the list.
- def add(self,data):
- newNode = Node(data);
- #Checks if the list is empty.
- if self.head.data is None:
- #If list is empty, both head and tail would point to new node.
- self.head = newNode;
- self.tail = newNode;
- newNode.next = self.head;
- else:
- #tail will point to new node.
- self.tail.next = newNode;
- #New node will become new tail.
- self.tail = newNode;
- #Since, it is circular linked list tail will point to head.
- self.tail.next = self.head;
- #Searches for a node in the list
- def search(self,element):
- current = self.head;
- i = 1;
- flag = False;
- #Checks whether list is empty
- if(self.head == None):
- print(“List is empty”);
- else:
- while(True):
- #Compares element to be found with each node present in the list
- if(current.data == element):
- flag = True;
- break;
- current = current.next;
- i = i + 1;
- if(current == self.head):
- break;
- if(flag):
- print(“Element is present in the list at the position : “ + str(i));
- else:
- print(“Element is not present in the list”);
- class CircularLinkedList:
- cl = CreateList();
- #Adds data to the list
- cl.add(1);
- cl.add(2);
- cl.add(3);
- cl.add(4);
- #Search for node 2 in the list
- cl.search(2);
- #Search for node in the list
- cl.search(7);
Output:
Element is present in the list at the position: 2 Element is not present in the list