Python program that deletes a node from the end of a circular linked list:
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class CircularLinkedList:
def __init__(self):
self.head = None
def append(self, data):
if not self.head:
self.head = Node(data)
self.head.next = self.head
else:
current = self.head
while current.next != self.head:
current = current.next
new_node = Node(data)
current.next = new_node
new_node.next = self.head
def delete_at_end(self):
current = self.head
prev = None
if self.head:
while current.next != self.head:
prev = current
current = current.next
prev.next = current.next
def display(self):
current = self.head
if self.head:
while current.next != self.head:
print(current.data)
current = current.next
print(current.data)
# create circular linked list
cll = CircularLinkedList()
# append some data to the list
cll.append(1)
cll.append(2)
cll.append(3)
# delete the last node
cll.delete_at_end()
# display the updated list
cll.display()
In this example, we first define a Node class with a constructor that initializes the data and next properties. The CircularLinkedList class is implemented using the Node class. The CircularLinkedList class has an append method that adds new data to the end of the linked list, a delete_at_end method that deletes the last node from the linked list and a display method that prints the data of each node in the list.
The delete_at_end() method deletes the last node from the end of the circular linked list. It starts by initializing two variables current and prev, current is set to the head of the linked list and prev to None. Then it iterates through the list until it reaches the last node. It then updates the next pointer of the second-to-last node to point to the head of the linked list, effectively cutting the last node out of the list.
After calling the delete_at_end method, the updated list can be displayed using the display method.
Please note that this implementation assumes the list is not empty and if the list is empty it will raise an Exception.