0% found this document useful (0 votes)
6 views41 pages

ADS With Java Lab Record

The document contains Java programs for various linked list operations including singly linked lists, doubly linked lists, circular linked lists, and stack operations using linked lists. Each section outlines specific functionalities such as insertion, deletion, searching, displaying, and merging lists, along with sample outputs. The programs are structured with user interaction through a menu-driven approach to perform the desired operations.

Uploaded by

Rohan Roxx
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views41 pages

ADS With Java Lab Record

The document contains Java programs for various linked list operations including singly linked lists, doubly linked lists, circular linked lists, and stack operations using linked lists. Each section outlines specific functionalities such as insertion, deletion, searching, displaying, and merging lists, along with sample outputs. The programs are structured with user interaction through a menu-driven approach to perform the desired operations.

Uploaded by

Rohan Roxx
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

EXPERIMENT–1

Write a java program to perform various operations on single linked list


Operations
1. Insert at Beginning
2. Insert at End
3. Delete by Value
4. Search
5. Display
6. Exit
Program: [Link]
import [Link];

class SinglyLinkedList {

class Node {
int data;
Node next;

Node(int data) {
[Link] = data;
next = null;
}
}

Node head = null;

// Insert at beginning
void insertBeg(int data) {
Node newNode = new Node(data);
[Link] = head;
head = newNode;
[Link]("Inserted Successfully!");
}

// Insert at end
void insertEnd(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
} else {
Node temp = head;
while ([Link] != null)
temp = [Link];
[Link] = newNode;
}
[Link]("Inserted Successfully!");
}

// Delete element
1
void delete(int key) {
Node temp = head, prev = null;

if (temp != null && [Link] == key) {


head = [Link];
[Link]("Deleted Successfully!");
return;
}

while (temp != null && [Link] != key) {


prev = temp;
temp = [Link];
}

if (temp == null) {
[Link]("Element Not Found!");
return;
}

[Link] = [Link];
[Link]("Deleted Successfully!");
}

// Search element
void search(int key) {
Node temp = head;
int pos = 1;

while (temp != null) {


if ([Link] == key) {
[Link]("Element found at position: " + pos);
return;
}
temp = [Link];
pos++;
}
[Link]("Element Not Found!");
}

// Display list
void display() {
if (head == null) {
[Link]("List is Empty!");
return;
}

Node temp = head;


[Link]("Linked List: ");
while (temp != null) {
2
[Link]([Link] + " -> ");
temp = [Link];
}
[Link]("NULL");
}

// Main Method
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
SinglyLinkedList list = new SinglyLinkedList();
int choice, data;

do {
[Link]("\n--- SINGLY LINKED LIST MENU ---");
[Link]("1. Insert at Beginning");
[Link]("2. Insert at End");
[Link]("3. Delete");
[Link]("4. Search");
[Link]("5. Display");
[Link]("6. Exit");
[Link]("Enter Choice: ");

choice = [Link]();

switch (choice) {
case 1:
[Link]("Enter Data: ");
data = [Link]();
[Link](data);
break;

case 2:
[Link]("Enter Data: ");
data = [Link]();
[Link](data);
break;

case 3:
[Link]("Enter Element to Delete: ");
data = [Link]();
[Link](data);
break;

case 4:
[Link]("Enter Element to Search: ");
data = [Link]();
[Link](data);
break;

3
case 5:
[Link]();
break;

case 6:
[Link]("Exiting...");
break;

default:
[Link]("Invalid Choice!");
}

} while (choice != 6);


}
}
Sample Output
--- SINGLY LINKED LIST MENU ---
1. Insert at Beginning
2. Insert at End
3. Delete
4. Search
5. Display
6. Exit
Enter Choice: 1
Enter Data: 10
Inserted Successfully!

Enter Choice: 2
Enter Data: 20
Inserted Successfully!

Enter Choice: 5
Linked List: 10 -> 20 -> NULL

Enter Choice: 4
Enter Element to Search: 20
Element found at position: 2

Enter Choice: 3
Enter Element to Delete: 10
Deleted Successfully!

Enter Choice: 5
Linked List: 20 -> NULL

4
EXPERIMENT–2
Write a java program for the following
a) Reverse a linked list b) Sort the data in a linked list c) Remove duplicates d)
Merge two linked lists

import [Link];

class ReverseList {

static class Node {


int data;
Node next;
Node(int d) { data = d; }
}

static Node head = null;

static void insert(int d) {


Node n = new Node(d);
if (head == null)
head = n;
else {
Node t = head;
while ([Link] != null)
t = [Link];
[Link] = n;
}
}

static void reverse() {


Node prev = null, curr = head, next;
while (curr != null) {
next = [Link];
[Link] = prev;
prev = curr;
curr = next;
}
head = prev;
}

static void display() {


Node t = head;
while (t != null) {
[Link]([Link] + " ");
t = [Link];
}
[Link]();
}

5
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
int n, val;

[Link]("Enter number of nodes: ");


n = [Link]();

for (int i = 0; i < n; i++) {


[Link]("Enter value: ");
val = [Link]();
insert(val);
}

[Link]("Original List: ");


display();

reverse();

[Link]("Reversed List: ");


display();
}
}
Sample Output
Enter number of nodes: 4
Enter value: 10
Enter value: 20
Enter value: 30
Enter value: 40
Original List: 10 20 30 40
Reversed List: 40 30 20 10

EXPERIMENT–2(b)
import [Link].*;

class SortList {
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
LinkedList<Integer> list = new LinkedList<>();

[Link]("Enter number of elements: ");


int n = [Link]();

for (int i = 0; i < n; i++) {


[Link]("Enter value: ");
[Link]([Link]());
}

[Link](list);
[Link]("Sorted List: " + list);
6
}
}

Sample Output
Enter number of elements: 5
Enter value: 40
Enter value: 10
Enter value: 30
Enter value: 20
Enter value: 50
Sorted List: [10, 20, 30, 40, 50]

EXPERIMENT–2(c)
Remove Duplicates
import [Link].*;

class RemoveDuplicates {
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
LinkedHashSet<Integer> set = new LinkedHashSet<>();

[Link]("Enter number of elements: ");


int n = [Link]();

for (int i = 0; i < n; i++) {


[Link]([Link]());
}

[Link]("After Removing Duplicates: " + set);


}
}
Sample Output
Enter number of elements: 6
10 20 10 30 20 40
After Removing Duplicates: [10, 20, 30, 40]

EXPERIMENT–2(d)
Merge Two Linked Lists
import [Link].*;

class MergeLists {
public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


LinkedList<Integer> list1 = new LinkedList<>();
LinkedList<Integer> list2 = new LinkedList<>();

[Link]("Enter size of List1: ");


7
int n1 = [Link]();
for (int i = 0; i < n1; i++)
[Link]([Link]());

[Link]("Enter size of List2: ");


int n2 = [Link]();
for (int i = 0; i < n2; i++)
[Link]([Link]());

[Link](list2);
[Link](list1);

[Link]("Merged List: " + list1);


}
}

Output
Enter size of List1: 3
10 30 50
Enter size of List2: 3
20 40 60
Merged List: [10, 20, 30, 40, 50, 60]

8
EXPERIMENT–3
Write a java program to perform various operations on doubly linked list.
Operations
1. Insert at Beginning
2. Insert at End
3. Delete
4. Display Forward
5. Display Reverse
6. Exit
Program: [Link]
import [Link];

class DoublyLinkedList {

class Node {
int data;
Node prev, next;

Node(int d) {
data = d;
prev = next = null;
}
}

Node head = null;

// Insert at beginning
void insertBeg(int data) {
Node newNode = new Node(data);
if (head != null)
[Link] = newNode;
[Link] = head;
head = newNode;
[Link]("Inserted Successfully!");
}

// Insert at end
void insertEnd(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
return;
}
Node temp = head;
while ([Link] != null)
temp = [Link];
[Link] = newNode;
[Link] = temp;
9
[Link]("Inserted Successfully!");
}

// Delete element
void delete(int key) {
Node temp = head;

while (temp != null && [Link] != key)


temp = [Link];

if (temp == null) {
[Link]("Element Not Found!");
return;
}

if ([Link] != null)
[Link] = [Link];
else
head = [Link];

if ([Link] != null)
[Link] = [Link];

[Link]("Deleted Successfully!");
}

// Display forward
void displayForward() {
Node temp = head;
[Link]("List Forward: ");
while (temp != null) {
[Link]([Link] + " ");
temp = [Link];
}
[Link]();
}

// Display reverse
void displayReverse() {
Node temp = head;
if (temp == null) return;

while ([Link] != null)


temp = [Link];

[Link]("List Reverse: ");


while (temp != null) {
[Link]([Link] + " ");
temp = [Link];
10
}
[Link]();
}

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


DoublyLinkedList list = new DoublyLinkedList();
int choice, data;

do {
[Link]("\n--- DOUBLY LINKED LIST MENU ---");
[Link]("[Link] Beginning");
[Link]("[Link] End");
[Link]("[Link]");
[Link]("[Link] Forward");
[Link]("[Link] Reverse");
[Link]("[Link]");
[Link]("Enter Choice: ");

choice = [Link]();

switch (choice) {
case 1:
[Link]("Enter Data: ");
data = [Link]();
[Link](data);
break;
case 2:
[Link]("Enter Data: ");
data = [Link]();
[Link](data);
break;
case 3:
[Link]("Enter Element to Delete: ");
data = [Link]();
[Link](data);
break;
case 4:
[Link]();
break;
case 5:
[Link]();
break;
case 6:
[Link]("Exiting...");
break;
default:
[Link]("Invalid Choice!");
11
}

} while (choice != 6);


}
}

Output :
Enter Choice: 1
Enter Data: 10
Inserted Successfully!

Enter Choice: 2
Enter Data: 20
Inserted Successfully!

Enter Choice: 4
List Forward: 10 20

Enter Choice: 5
List Reverse: 20 10

12
EXPERIMENT–4
Write a java program to perform various operations on circular linked list.
Operations
1. Insert
2. Delete
3. Display
4. Exit
Program: [Link]
import [Link];

class CircularLinkedList {

class Node {
int data;
Node next;

Node(int d) {
data = d;
next = null;
}
}

Node last = null;

// Insert
void insert(int data) {
Node newNode = new Node(data);

if (last == null) {
last = newNode;
[Link] = last;
} else {
[Link] = [Link];
[Link] = newNode;
last = newNode;
}
[Link]("Inserted Successfully!");
}

// Delete
void delete(int key) {
if (last == null) {
[Link]("List Empty!");
return;
}

Node curr = [Link], prev = last;

13
do {
if ([Link] == key) {
[Link] = [Link];
if (curr == last)
last = prev;
[Link]("Deleted Successfully!");
return;
}
prev = curr;
curr = [Link];
} while (curr != [Link]);

[Link]("Element Not Found!");


}

// Display
void display() {
if (last == null) {
[Link]("List Empty!");
return;
}

Node temp = [Link];


[Link]("Circular List: ");
do {
[Link]([Link] + " ");
temp = [Link];
} while (temp != [Link]);
[Link]();
}

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


CircularLinkedList list = new CircularLinkedList();
int choice, data;

do {
[Link]("\n--- CIRCULAR LINKED LIST MENU ---");
[Link]("[Link]");
[Link]("[Link]");
[Link]("[Link]");
[Link]("[Link]");
[Link]("Enter Choice: ");

choice = [Link]();

switch (choice) {
case 1:
14
[Link]("Enter Data: ");
data = [Link]();
[Link](data);
break;
case 2:
[Link]("Enter Element to Delete: ");
data = [Link]();
[Link](data);
break;
case 3:
[Link]();
break;
case 4:
[Link]("Exiting...");
break;
default:
[Link]("Invalid Choice!");
}

} while (choice != 4);


}
}

Output :
Enter Choice: 1
Enter Data: 10
Inserted Successfully!

Enter Choice: 1
Enter Data: 20
Inserted Successfully!

Enter Choice: 3
Circular List: 10 20

15
EXPERIMENT–5

Write a java program for performing various operations on stack using linked list.
Operations
1. Push
2. Pop
3. Peek
4. Display
5. Exit
Program: [Link]
import [Link];

class StackUsingLinkedList {

class Node {
int data;
Node next;

Node(int d) {
data = d;
next = null;
}
}

Node top = null;

// Push
void push(int data) {
Node newNode = new Node(data);
[Link] = top;
top = newNode;
[Link]("Pushed Successfully!");
}

// Pop
void pop() {
if (top == null) {
[Link]("Stack Underflow!");
return;
}
[Link]("Popped Element: " + [Link]);
top = [Link];
}

// Peek
void peek() {
if (top == null)
[Link]("Stack Empty!");
else
16
[Link]("Top Element: " + [Link]);
}

// Display
void display() {
if (top == null) {
[Link]("Stack Empty!");
return;
}

Node temp = top;


[Link]("Stack: ");
while (temp != null) {
[Link]([Link] + " ");
temp = [Link];
}
[Link]();
}

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


StackUsingLinkedList s = new StackUsingLinkedList();
int choice, data;

do {
[Link]("\n--- STACK MENU ---");
[Link]("[Link]");
[Link]("[Link]");
[Link]("[Link]");
[Link]("[Link]");
[Link]("[Link]");
[Link]("Enter Choice: ");

choice = [Link]();

switch (choice) {
case 1:
[Link]("Enter Data: ");
data = [Link]();
[Link](data);
break;
case 2:
[Link]();
break;
case 3:
[Link]();
break;
case 4:
17
[Link]();
break;
case 5:
[Link]("Exiting...");
break;
default:
[Link]("Invalid Choice!");
}

} while (choice != 5);


}
}

Output :
Enter Choice: 1
Enter Data: 10
Pushed Successfully!

Enter Choice: 1
Enter Data: 20
Pushed Successfully!

Enter Choice: 4
Stack: 20 10

Enter Choice: 2
Popped Element: 20

Enter Choice: 3
Top Element: 10

18
EXPERIMENT–6
Write a java program for performing various operations on queue using linked list.
Operations
1. Enqueue
2. Dequeue
3. Front
4. Display
5. Exit
Program: [Link]
import [Link];

class QueueUsingLinkedList {

class Node {
int data;
Node next;

Node(int d) {
data = d;
next = null;
}
}

Node front = null, rear = null;

void enqueue(int data) {


Node newNode = new Node(data);

if (rear == null) {
front = rear = newNode;
} else {
[Link] = newNode;
rear = newNode;
}
[Link]("Enqueued Successfully!");
}

void dequeue() {
if (front == null) {
[Link]("Queue Underflow!");
return;
}
[Link]("Dequeued Element: " + [Link]);
front = [Link];
if (front == null)
rear = null;
}

void peek() {
19
if (front == null)
[Link]("Queue Empty!");
else
[Link]("Front Element: " + [Link]);
}

void display() {
if (front == null) {
[Link]("Queue Empty!");
return;
}

Node temp = front;


[Link]("Queue: ");
while (temp != null) {
[Link]([Link] + " ");
temp = [Link];
}
[Link]();
}

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


QueueUsingLinkedList q = new QueueUsingLinkedList();
int choice, data;

do {
[Link]("\n--- QUEUE MENU ---");
[Link]("[Link]");
[Link]("[Link]");
[Link]("[Link]");
[Link]("[Link]");
[Link]("[Link]");
[Link]("Enter Choice: ");

choice = [Link]();

switch (choice) {
case 1:
[Link]("Enter Data: ");
data = [Link]();
[Link](data);
break;
case 2:
[Link]();
break;
case 3:
[Link]();
20
break;
case 4:
[Link]();
break;
case 5:
[Link]("Exiting...");
break;
default:
[Link]("Invalid Choice!");
}

} while (choice != 5);


}
}

Output:
Enter Choice: 1
Enter Data: 10
Enqueued Successfully!

Enter Choice: 1
Enter Data: 20
Enqueued Successfully!

Enter Choice: 4
Queue: 10 20

Enter Choice: 2
Dequeued Element: 10

Enter Choice: 3
Front Element: 20

21
EXPERIMENT–7
Write a java program for the following using stack
a) Infix to postfix conversion.
b) Expression evaluation.
c) Obtain the binary number for a given decimal number.
a) Infix to Postfix Conversion Program

import [Link].*;

class InfixToPostfix {

static int precedence(char c) {


if (c == '+' || c == '-') return 1;
if (c == '*' || c == '/') return 2;
return 0;
}

public static void main(String[] args) {


Scanner sc = new Scanner([Link]);
Stack<Character> stack = new Stack<>();
String postfix = "";

[Link]("Enter Infix Expression: ");


String infix = [Link]();

for (char ch : [Link]()) {


if ([Link](ch))
postfix += ch;
else {
while (![Link]() && precedence([Link]()) >= precedence(ch))
postfix += [Link]();
[Link](ch);
}
}

while (![Link]())
postfix += [Link]();

[Link]("Postfix Expression: " + postfix);


}
}

Output
Enter Infix Expression: A+B*C
Postfix Expression: ABC*+

22
b) Postfix Expression Evaluation
import [Link].*;

class PostfixEvaluation {

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


Stack<Integer> stack = new Stack<>();

[Link]("Enter Postfix Expression: ");


String exp = [Link]();

for (char ch : [Link]()) {


if ([Link](ch))
[Link](ch - '0');
else {
int b = [Link]();
int a = [Link]();
switch (ch) {
case '+': [Link](a + b); break;
case '-': [Link](a - b); break;
case '*': [Link](a * b); break;
case '/': [Link](a / b); break;
}
}
}

[Link]("Result: " + [Link]());


}
}

Output :
Enter Postfix Expression: 23*
Result: 6

C) Decimal to Binary using Stack

import [Link].*;

class DecimalToBinary {

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


Stack<Integer> stack = new Stack<>();

23
[Link]("Enter Decimal Number: ");
int num = [Link]();

while (num > 0) {


[Link](num % 2);
num = num / 2;
}

[Link]("Binary: ");
while (![Link]())
[Link]([Link]());
}
}

Output :
Enter Decimal Number: 10
Binary: 1010

24
EXPERIMENT–8
Write a java program to implement various operations on Binary Search Tree Using Recursive and
Non-Recursive methods.

import [Link];

class BST {

class Node {
int data;
Node left, right;
Node(int d) { data = d; }
}

Node root = null;

Node insert(Node root, int data) {


if (root == null)
return new Node(data);

if (data < [Link])


[Link] = insert([Link], data);
else
[Link] = insert([Link], data);

return root;
}

boolean search(Node root, int key) {


if (root == null) return false;
if ([Link] == key) return true;
if (key < [Link])
return search([Link], key);
else
return search([Link], key);
}

void inorder(Node root) {


if (root != null) {
inorder([Link]);
[Link]([Link] + " ");
inorder([Link]);
}
}

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


BST tree = new BST();
25
int choice, data;

do {
[Link]("\n--- BST MENU ---");
[Link]("[Link]");
[Link]("[Link]");
[Link]("[Link] Traversal");
[Link]("[Link]");
[Link]("Enter Choice: ");

choice = [Link]();

switch (choice) {
case 1:
[Link]("Enter Data: ");
data = [Link]();
[Link] = [Link]([Link], data);
break;
case 2:
[Link]("Enter Key: ");
data = [Link]();
if ([Link]([Link], data))
[Link]("Element Found!");
else
[Link]("Element Not Found!");
break;
case 3:
[Link]([Link]);
[Link]();
break;
case 4:
[Link]("Exiting...");
break;
}
} while (choice != 4);
}
}

Output :
Enter Choice: 1
Enter Data: 50
Enter Choice: 1
Enter Data: 30
Enter Choice: 1
Enter Data: 70
Enter Choice: 3
30 50 70

26
EXPERIMENT–9
Write a java program to implement the following for a graph. a) BFS b) DFS

import [Link].*;

class Graph {

int V;
LinkedList<Integer>[] adj;

Graph(int v) {
V = v;
adj = new LinkedList[v];
for (int i = 0; i < v; i++)
adj[i] = new LinkedList<>();
}

void addEdge(int u, int v) {


adj[u].add(v);
}

void BFS(int s) {
boolean[] visited = new boolean[V];
Queue<Integer> q = new LinkedList<>();
visited[s] = true;
[Link](s);

while (![Link]()) {
s = [Link]();
[Link](s + " ");
for (int n : adj[s]) {
if (!visited[n]) {
visited[n] = true;
[Link](n);
}
}
}
[Link]();
}

void DFS(int s) {
boolean[] visited = new boolean[V];
DFSUtil(s, visited);
[Link]();
}

void DFSUtil(int v, boolean[] visited) {


visited[v] = true;
[Link](v + " ");
27
for (int n : adj[v]) {
if (!visited[n])
DFSUtil(n, visited);
}
}

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


[Link]("Enter number of vertices: ");
int v = [Link]();

Graph g = new Graph(v);

[Link]("Enter number of edges: ");


int e = [Link]();

for (int i = 0; i < e; i++) {


int u = [Link]();
int w = [Link]();
[Link](u, w);
}

[Link]("Enter starting vertex: ");


int start = [Link]();

[Link]("BFS: ");
[Link](start);

[Link]("DFS: ");
[Link](start);
}
}

Output :
Enter number of vertices: 4
Enter number of edges: 3
01
02
13
Enter starting vertex: 0
BFS: 0 1 2 3
DFS: 0 1 3 2

28
EXPERIMENT–10

Write a java program to implement Merge & Heap Sort of given elements

import [Link];

class MergeSort {

void merge(int a[], int l, int m, int r) {


int n1 = m - l + 1;
int n2 = r - m;

int L[] = new int[n1];


int R[] = new int[n2];

for (int i = 0; i < n1; i++)


L[i] = a[l + i];
for (int j = 0; j < n2; j++)
R[j] = a[m + 1 + j];

int i = 0, j = 0, k = l;

while (i < n1 && j < n2) {


if (L[i] <= R[j])
a[k++] = L[i++];
else
a[k++] = R[j++];
}

while (i < n1)


a[k++] = L[i++];

while (j < n2)


a[k++] = R[j++];
}

void sort(int a[], int l, int r) {


if (l < r) {
int m = (l + r) / 2;
sort(a, l, m);
sort(a, m + 1, r);
merge(a, l, m, r);
}
}

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


MergeSort ms = new MergeSort();
29
[Link]("Enter number of elements: ");
int n = [Link]();

int a[] = new int[n];


for (int i = 0; i < n; i++)
a[i] = [Link]();

[Link](a, 0, n - 1);

[Link]("Sorted Array: ");


for (int x : a)
[Link](x + " ");
}
}

Sample Output
Enter number of elements: 5
53142
Sorted Array: 1 2 3 4 5

30
EXPERIMENT–11

Write a java program to implement Quick Sort of given elements.


Program: [Link]
import [Link];

class QuickSort {

int partition(int a[], int low, int high) {


int pivot = a[high];
int i = low - 1;

for (int j = low; j < high; j++) {


if (a[j] <= pivot) {
i++;
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}

int temp = a[i + 1];


a[i + 1] = a[high];
a[high] = temp;

return i + 1;
}

void sort(int a[], int low, int high) {


if (low < high) {
int pi = partition(a, low, high);
sort(a, low, pi - 1);
sort(a, pi + 1, high);
}
}

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


QuickSort qs = new QuickSort();

[Link]("Enter number of elements: ");


int n = [Link]();

int a[] = new int[n];


for (int i = 0; i < n; i++)
a[i] = [Link]();

[Link](a, 0, n - 1);
31
[Link]("Sorted Array: ");
for (int x : a)
[Link](x + " ");
}
}

Output
Enter number of elements: 5
94162
Sorted Array: 1 2 4 6 9

32
EXPERIMENT–12
Write a java program to implement various operations on AVL trees.

Program: [Link]
import [Link];

class AVLTree {

class Node {
int data, height;
Node left, right;

Node(int d) {
data = d;
height = 1;
}
}

Node root = null;

int height(Node n) {
return (n == null) ? 0 : [Link];
}

int getBalance(Node n) {
return (n == null) ? 0 : height([Link]) - height([Link]);
}

Node rightRotate(Node y) {
Node x = [Link];
Node t = [Link];

[Link] = y;
[Link] = t;

[Link] = [Link](height([Link]), height([Link])) + 1;


[Link] = [Link](height([Link]), height([Link])) + 1;

return x;
}

Node leftRotate(Node x) {
Node y = [Link];
Node t = [Link];

[Link] = x;
[Link] = t;

[Link] = [Link](height([Link]), height([Link])) + 1;


33
[Link] = [Link](height([Link]), height([Link])) + 1;

return y;
}

Node insert(Node node, int key) {

if (node == null)
return new Node(key);

if (key < [Link])


[Link] = insert([Link], key);
else if (key > [Link])
[Link] = insert([Link], key);
else
return node;

[Link] = 1 + [Link](height([Link]), height([Link]));

int balance = getBalance(node);

// LL
if (balance > 1 && key < [Link])
return rightRotate(node);

// RR
if (balance < -1 && key > [Link])
return leftRotate(node);

// LR
if (balance > 1 && key > [Link]) {
[Link] = leftRotate([Link]);
return rightRotate(node);
}

// RL
if (balance < -1 && key < [Link]) {
[Link] = rightRotate([Link]);
return leftRotate(node);
}

return node;
}

void inorder(Node root) {


if (root != null) {
inorder([Link]);
[Link]([Link] + " ");
inorder([Link]);
34
}
}

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


AVLTree tree = new AVLTree();
int choice, data;

do {
[Link]("\[Link]");
[Link]("[Link] Inorder");
[Link]("[Link]");
[Link]("Enter Choice: ");
choice = [Link]();

switch (choice) {
case 1:
[Link]("Enter Data: ");
data = [Link]();
[Link] = [Link]([Link], data);
break;
case 2:
[Link]([Link]);
[Link]();
break;
case 3:
[Link]("Exiting...");
}
} while (choice != 3);
}
}

Output :
Enter Choice: 1
Enter Data: 30
Enter Choice: 1
Enter Data: 20
Enter Choice: 1
Enter Data: 10
Enter Choice: 2
10 20 30

35
EXPERIMENT–13
Write a java program to perform the following operations: a) Insertion into a B-tree b) Searching in a
B-tree
Program: [Link]
import [Link];

class BTree {

class Node {
int data;
Node left, right;

Node(int d) {
data = d;
}
}

Node root = null;

Node insert(Node root, int data) {


if (root == null)
return new Node(data);

if (data < [Link])


[Link] = insert([Link], data);
else
[Link] = insert([Link], data);

return root;
}

boolean search(Node root, int key) {


if (root == null) return false;
if ([Link] == key) return true;
if (key < [Link])
return search([Link], key);
else
return search([Link], key);
}

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


BTree tree = new BTree();
int choice, data;

do {
[Link]("\[Link]");
[Link]("[Link]");
36
[Link]("[Link]");
[Link]("Enter Choice: ");

choice = [Link]();

switch (choice) {
case 1:
[Link]("Enter Data: ");
data = [Link]();
[Link] = [Link]([Link], data);
break;

case 2:
[Link]("Enter Key: ");
data = [Link]();
if ([Link]([Link], data))
[Link]("Element Found!");
else
[Link]("Element Not Found!");
break;
}

} while (choice != 3);


}
}

✅Sample Output
Enter Choice: 1
Enter Data: 40
Enter Choice: 1
Enter Data: 20
Enter Choice: 2
Enter Key: 20
Element Found!

37
EXPERIMENT–14
Write a java program to implementation of recursive and non-recursive functions to Binary tree
Traversals
Program: [Link]
import [Link].*;

class TreeTraversal {

static class Node {


int data;
Node left, right;
Node(int d) { data = d; }
}

static void inorder(Node r) {


if (r != null) {
inorder([Link]);
[Link]([Link] + " ");
inorder([Link]);
}
}

static void inorderNR(Node root) {


Stack<Node> s = new Stack<>();
Node curr = root;

while (curr != null || ![Link]()) {


while (curr != null) {
[Link](curr);
curr = [Link];
}
curr = [Link]();
[Link]([Link] + " ");
curr = [Link];
}
}

public static void main(String[] args) {

Node root = new Node(1);


[Link] = new Node(2);
[Link] = new Node(3);

[Link]("Recursive Inorder: ");


inorder(root);

[Link]("\nNon Recursive Inorder: ");


inorderNR(root);
}
38
}

Output
Recursive Inorder: 2 1 3
Non Recursive Inorder: 2 1 3

39
EXPERIMENT–15
Write a java program to implement all the functions of Dictionary (ADT) using Hashing hi dear
kindly provide Solutions for the above programs along with Sample outputs

Program: [Link]
import [Link].*;

class DictionaryHash {

public static void main(String[] args) {

Scanner sc = new Scanner([Link]);


HashMap<String, String> dict = new HashMap<>();
int choice;

do {
[Link]("\[Link]");
[Link]("[Link]");
[Link]("[Link]");
[Link]("[Link]");
[Link]("Enter Choice: ");

choice = [Link]();
[Link]();

switch (choice) {

case 1:
[Link]("Enter Key: ");
String k = [Link]();
[Link]("Enter Value: ");
String v = [Link]();
[Link](k, v);
break;

case 2:
[Link]("Enter Key to Search: ");
k = [Link]();
[Link]("Value: " + [Link](k));
break;

case 3:
[Link](dict);
break;
}

} while (choice != 4);


}
}
40
Output
Enter Choice: 1
Enter Key: Apple
Enter Value: Fruit

Enter Choice: 2
Enter Key to Search: Apple
Value: Fruit

41

You might also like