programming-examples/java/Data_Structures/Java Program to Implement Triply Linked List.java
2019-11-15 12:59:38 +01:00

270 lines
5.2 KiB
Java

/*This is a Java Program to implement Triply Linked List. Triply linked list is a list in which each node has 3 pointers pointing to three other nodes. Here a binary search tree is implemented using a triply linked list.*/
/*
* Java Program to Implement Triply Linked List
*/
import java.util.Scanner;
/* class TLLNode */
class TLLNode
{
TLLNode left, right, middle;
int data;
/* Constructor */
public TLLNode(int x)
{
data = x;
left = null;
right = null;
middle = null;
}
}
/* class TriplyLinkedList */
class TriplyLinkedList
{
TLLNode root, tmp;
/* Constructor */
public TriplyLinkedList()
{
root = null;
tmp = null;
}
/* function to check if empty */
public boolean isEmpty()
{
return root == null;
}
/* function to clear list */
public void makeEmpty()
{
root = null;
tmp = null;
}
/* function to insert */
public void insert(int x)
{
root = insert(root, x);
}
/* function to insert element */
public TLLNode insert(TLLNode r, int x)
{
if (r == null)
{
r = new TLLNode(x);
r.middle = tmp;
}
else
{
tmp = r;
if (r.data >= x)
r.left = insert(r.left, x);
else
r.right = insert(r.right, x);
}
return r;
}
/* Function for print */
public void printList()
{
printList(root);
}
private void printList(TLLNode r)
{
if (r != null)
{
printList(r.left);
System.out.print(r.data +" ");
printList(r.right);
}
}
}
/* class TriplyLinkedListTest */
public class TriplyLinkedListTest
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Triply Linked List Test\n");
TriplyLinkedList tll = new TriplyLinkedList();
char ch;
/* Perform list operations */
do
{
System.out.println("\nTriply Linked List Operations\n");
System.out.println("1. insert ");
System.out.println("2. check empty");
System.out.println("3. make empty");
int choice = scan.nextInt();
switch (choice)
{
case 1 :
System.out.println("Enter integer element to insert");
tll.insert( scan.nextInt() );
break;
case 2 :
System.out.println("Empty status = "+ tll.isEmpty());
break;
case 3 :
System.out.println("\nList Cleared\n");
tll.makeEmpty();
break;
default :
System.out.println("Wrong Entry \n ");
break;
}
/* Display list */
System.out.print("\nList : ");
tll.printList();
System.out.println("\nDo you want to continue (Type y or n) \n");
ch = scan.next().charAt(0);
}
while (ch == 'Y'|| ch == 'y');
}
}
/*
Triply Linked List Operations
1. insert
2. check empty
3. make empty
1
Enter integer element to insert
97
List : 97
Do you want to continue (Type y or n)
y
Triply Linked List Operations
1. insert
2. check empty
3. make empty
1
Enter integer element to insert
24
List : 24 97
Do you want to continue (Type y or n)
y
Triply Linked List Operations
1. insert
2. check empty
3. make empty
1
Enter integer element to insert
6
List : 6 24 97
Do you want to continue (Type y or n)
y
Triply Linked List Operations
1. insert
2. check empty
3. make empty
1
Enter integer element to insert
19
List : 6 19 24 97
Do you want to continue (Type y or n)
y
Triply Linked List Operations
1. insert
2. check empty
3. make empty
1
Enter integer element to insert
94
List : 6 19 24 94 97
Do you want to continue (Type y or n)
y
Triply Linked List Operations
1. insert
2. check empty
3. make empty
1
Enter integer element to insert
57
List : 6 19 24 57 94 97
Do you want to continue (Type y or n)
y
Triply Linked List Operations
1. insert
2. check empty
3. make empty
1
Enter integer element to insert
23
List : 6 19 23 24 57 94 97
Do you want to continue (Type y or n)
y
Triply Linked List Operations
1. insert
2. check empty
3. make empty
2
Empty status = false
List : 6 19 23 24 57 94 97
Do you want to continue (Type y or n)
y
Triply Linked List Operations
1. insert
2. check empty
3. make empty
3
List Cleared
List :
Do you want to continue (Type y or n)
y
Triply Linked List Operations
1. insert
2. check empty
3. make empty
2
Empty status = true
List :
Do you want to continue (Type y or n)
n