// Java Program
// Insert node at end of circular doubly linked list
// Define class of linked list Node
class LinkNode
{
public int data;
public LinkNode next;
public LinkNode prev;
public LinkNode(int data)
{
// Set node value
this.data = data;
this.next = null;
this.prev = null;
}
}
public class CircularDLL
{
public LinkNode head;
public LinkNode tail;
public CircularDLL()
{
// Set head and tail values
this.head = null;
this.tail = null;
}
// Insert node at end of circular doubly linked list
public void insert(int value)
{
// Create a node
LinkNode node = new LinkNode(value);
if (this.head == null)
{
// First node of linked list
this.head = node;
this.tail = node;
node.next = node;
node.prev = node;
}
else
{
node.next = this.head;
node.prev = this.tail;
this.head.prev = node;
this.tail.next = node;
// Set new last node
this.tail = node;
}
}
public void headToTail()
{
if (this.head == null)
{
System.out.println("Empty linked list");
}
else
{
LinkNode temp = this.head;
System.out.println("
Node Form Front to Rear :");
while (temp != null)
{
System.out.print(temp.data + " ");
temp = temp.next;
if (temp == this.head)
{
return;
}
}
}
}
public void tailToHead()
{
if (this.tail == null)
{
System.out.print("Empty linked list");
}
else
{
LinkNode temp = this.tail;
System.out.println("
Node Form Rear to Front :");
while (temp != null)
{
System.out.print(temp.data + " ");
temp = temp.prev;
if (temp == this.tail)
{
return;
}
}
}
}
public static void main(String[] args)
{
CircularDLL cdll = new CircularDLL();
// Add following linked list nodes
cdll.insert(1);
cdll.insert(2);
cdll.insert(3);
cdll.insert(4);
cdll.insert(5);
cdll.insert(6);
// Display node
cdll.headToTail();
cdll.tailToHead();
}
}