21BCE9726 - DSA Lab - FINAL REPORT
21BCE9726 - DSA Lab - FINAL REPORT
FINAL
PROJECT
REPORT
SUBMITTED TO THE
VIT-AP UNIVERSITY FOR FULLFILLMENT
DEGREEOF
BTECH
IN
COMPUTER SCIENCE & ENGINEERING
GUIDED BY
COURSE:
DATA
STRUCTURE
AND
ALGORITM
SUBMITTED BY
U.MANIKANTA 21BCE9726
UNIVERSITYDECEMBER 2022
21BCE97
MANIKANTA UYYALA
EXPERIMENT-1
Write a Program to find the factorial of a given number using recursion andanalyze the time
complexity.
CODE:
import java.util.*;
public class Dsa_1 {
public static void main(String[]args) { long start=
System.nanoTime(); Scanner sc= new
Scanner(System.in); System.out.print("Enter a number:
");int n= sc.nextInt();
long req = fact(n);
long end=System.nanoTime(); System.out.println("The Factorial of "+ n +" is
"+req);
System.out.println("The time complexity is "
+ (end-start));
}
public static long fact(int n) {
if(n==0) {
return 1;
}
else{
return n*fact(n-1);
}
}
}
OUTPUT:
21BCE97
MANIKANTA
Write a Program to find the transpose of a given matrix and display its timecomplexity.
Sol) CODE:
import java.util.*;
public class prog1{
public static void main(String[]args) {
long start= System.nanoTime();
int a,b;
Scanner sc=new Scanner(System.in); System.out.println("Enter No of rows:");a=sc.nextInt();
System.out.println("Enter No of columns:");b=sc.nextInt();
int[][]A= new int[a][b];for(int i=0;i<a;i+
+) {
for(int j=0;j<b;j++) { System.out.print("Enter the Element A["
+(i)+"]"+"[" +(j)+"]:");
A[i][j]=sc.nextInt();
}
}
sc.close();
System.out.println("The transpose is :");
for(int i=0;i<b;i++) {
for(int j=0;j<a;j++) { System.out.println(A[j][i]+" ");
}
System.out.println();
}
long end= System.nanoTime(); System.out.println("The time
complexity is : "+
(end-start));
}
}
OUTPUT:
21BCE97
MANIKANTA
Challenging:
1) Write a Program to illustrate the difference between recursion anditeration
by giving its time complexities.
Sol)
RECURSION:
CODE:
import java.util.*;
public class prog3 {
public static void main(String[]args) { long start=
System.nanoTime(); Scanner sc= new
Scanner(System.in); System.out.print("Enter a number:
");int n= sc.nextInt();
long req = fact(n);
long end=System.nanoTime(); System.out.println("The Factorial of
"+ n +"
is "+req);
System.out.println("The time complexity is "
+ (end-
start));
} public static long fact(int n) {
if(n==0) {
return 1;
}
21BCE97
MANIKANTA
else{
return n*fact(n-1);
}
}
}
OUTPUT:
ITERATION:
CODE:
import java.util.*;
public class prog3
{
public static void main(String args[]) {long start=
System.nanoTime(); Scanner sc= new Scanner(System.in);
int i,fact=1;
int number=sc.nextInt(); for(i=1;i<=number;i++) { fact=
fact*i;
}
System.out.println("Factorial of the given numberis:"+fact);
long end= System.nanoTime();
System.out.println("The time complexity is : "+ (end-start));
}
}
OUTPUT:
MANIKANTA
EXPIREMENT-2
import java.io.*;
head;
// head of list
next;
// Constructor
Node(int d)
data = d; next
= null;
}
MANIKANTA
= new_node;
} else
= new_node;
list;
}
MANIKANTA
System.out.print("LinkedList: "); //
(currNode != null) {
main(String[] args)
LinkedList();
//
// ******INSERTION******
//
insert(list, 8);
OUTPUT:
LinkedList: 1 2 3 4 5 6 7 8
CODE:
public class DLL {
MANIKANTA
Node head;
class Node { int
data;
Node prev;
Node next;
Node(int d) { data = d; }
if (head != null)
= new_Node;
if(next_node == null)
= next_node; if(new_node.prev !=
null) new_node.prev.next =
new_node;
else
head = new_node;
if (prev_Node == null) {
= new_node;
return;
}
MANIKANTA
= last.next;
= last;
System.out.println();
= last.prev;
}
MANIKANTA
OUTPUT:
Created DLL is:
CODE:
import java.io.*;
import java.util.*;
class stack<T> {
ArrayList<T> A; int
top = -1; int size;
stack(int size)
{
MANIKANTA
void push(T X)
if (top + 1 == size) {
System.out.println("Stack Overflow");
+ 1; if (A.size() >
top) A.set(top,
X); else A.add(X);
}
T top()
if (top == -1) {
else
return
A.get(top
);
}
void pop()
if (top == -1) {
MANIKANTA
System.out.println("Stack Underflow");
else top--;
}
OUTPUT:
s1 after pushing 10, 20 and 30 :
10->20->30
element of s3:
200.0
MANIKANTA
CODE:
class QNode {
int key;
= null;
class Queue {
QNode front, rear;
public Queue()
{
}
MANIKANTA
= temp;
void dequeue()
if (this.front == null)
return; QNode temp =
this.front;
this.front = this.front.next;
= null;
q.enqueue(30);
q.enqueue(40);
q.enqueue(50);
q.dequeue();
System.out.println("Queue Front : " + q.front.key);
System.out.println("Queue Rear : " + q.rear.key);
}
}
OUTPUT:
Queue Front : 40
Queue Rear : 50
MANIKANTA
EXPIREMENT-3.1
Code:
import java.util.*;
class ListNode
{
int data;
ListNode next;
ListNode(int d)
{
data = d;
next =
null;
}
}
class BinaryTreeNode
{
int data;
BinaryTreeNode left, right = null;
BinaryTreeNode(int data)
{
this.data = data;
left = right =
null;
}
}
class BinaryTree
{
ListNode head;
BinaryTreeNode root;
void push(int
new_data)
{
ListNode new_node = new ListNode(new_data);
new_node.next = head;
head = new_node;
}
BinaryTreeNode convertList2Binary(BinaryTreeNode node)
{
MANIKANTA
Queue<BinaryTreeNode> q =
new LinkedList<BinaryTreeNode>();
if (head == null)
{
node =
null;return
null;
}
node = new
BinaryTreeNode(head.data); q.add(node);
head = head.next;
while (head != null)
{
BinaryTreeNode parent = q.peek();
BinaryTreeNode leftChild = null, rightChild =
null; leftChild = new
BinaryTreeNode(head.data); q.add(leftChild);
head = head.next;
if (head != null)
{
rightChild = new
BinaryTreeNode(head.data); q.add(rightChild);
head = head.next;
}
parent.left = leftChild;
parent.right = rightChild;
q.poll(); }
return node;
}
void inorderTraversal(BinaryTreeNode node)
{
if (node != null)
{
inorderTraversal(node.left);
System.out.print(node.data + " ");
inorderTraversal(node.right);
}
}
public static void main(String[] args)
{
BinaryTree tree = new
BinaryTree(); tree.push(36);
tree.push(30); tree.push(25);
MANIKANTA
tree.push(15);
tree.push(12
);tree.push(10);
BinaryTreeNode node = tree.convertList2Binary(tree.root); System.out.println("Inorder Traversal
of the"+ " constructed Binary Tree is:");
tree.inorderTraversal(node);
}
}
Output:
Inorder Traversal of the constructed Binary Tree is:25
12 30 10 36 15
21BCE97
MANIKANTA
EXPIREMENT-3.2
Code:
// Java program for different tree traversals
class Node
{int key;
Node left, right;
class BinaryTree {
Node root;
21BCE97
MANIKANTA
printInorder(node.left);
printInorder(node.right);
}
21BCE97
MANIKANTA
printPreorder(node.left);
printPreorder(node.right);
}
System.out.println(
"Preorder traversal of binary tree is ");
tree.printPreorder();
System.out.println(
"\nInorder traversal of binary tree is ");
tree.printInorder();
System.out.println(
"\nPostorder traversal of binary tree is ");
tree.printPostorder();
}
}
21BCE97
MANIKANTA
Output:
Preorder traversal of binary tree is1 2 4 5 3
Inorder traversal of binary tree is4 2 5 1 3
Postorder traversal of binary tree is4 5 2 3 1
21BCE97
MANIKANTA
EXPIREMENT-3.3
Code:
Node(int d) {
key = d;
height =
1;
}
}
class AVLTree {
Node root;
int height(Node N) {
if (N == null)
return 0;
return N.height;
}
Node rightRotate(Node y) {
Node x = y.left; Node
T2 = x.right;
x.right = y;
y.left = T2;
return x;
}
21BCE97
MANIKANTA
Node leftRotate(Node x) {
Node y =
x.right;
Node T2 =
y.left;
y.left = x;
x.right = T2;
return y;
}
int getBalance(Node N) {
if (N == null)
return 0;
if (node == null)
return (new Node(key));
node.height = 1 + max(height(node.left),
height(node.right));
21BCE97
MANIKANTA
node.right = rightRotate(node.right);
return leftRotate(node);
}
return node;
}
System.out.println("Preorder traversal" +
" of constructed tree is : ");
tree.preOrder(tree.root);
}
}
Output:
Preorder traversal of the constructed AVL tree
is 30 20 10 25 40 50
21BCE97
MANIKANTA
21BCE97
MANIKANTA
EXPIREMENT-4.1
Code:
// Java program for quicksort
import
java.io.*;class
QuickSort {
// pivot
int pivot = arr[high];
21BCE97
MANIKANTA UYYALA
// Increment index of
// smaller
elementi++;
swap(arr, i, j);
}
}
swap(arr, i + 1,
high);return (i + 1);
}
21BCE97
MANIKANTA
System.out.println();
}
// Driver Code
public static void main(String[] args)
{
int[] arr = { 10, 7, 8, 9, 1, 5 };
int n = arr.length;
quickSort(arr, 0, n - 1);
System.out.println("Sorted array: ");
printArray(arr, n);
}
}
OUTPUT:
21BCE97
MANIKANTA
EXPERIMENT-4.2
Write a program that takes the details of Students (name, roll number, address, CGPA) and
sort it in a non-decreasing order using Selection sort based onCGPA.
Code:
import java.io.*;
sum += grade[i];
cgpa = sum /
n;return cgpa;
i=0;i<n;i++) {
System.out.printf("%-10s|%-12s|%.2f\n",a[i],b[i],c[i]);
21BCE97
MANIKANTA
int n=Integer.parseInt(bi.readLine());
for(int i=0;i<n;i++) {
names[i]=bi.readLine(); System.out.println("Enter
for(int j=0;j<5;j++) {
marks[i][j]=Integer.parseInt(input[j]);
for(int i=0;i<n;i++) {
cgpa[i]=cgpacalc(marks[i],5);
System.out.println("before sorting");
print(names,regd,cgpa,n);
//selection sort
int
remaining=n;
for(int i=0;i<n;i++) {
21BCE97
MANIKANTA
double max=0;
int
max_index=0;
for(int j=0;j<remaining;j++) {
if(cgpa[j]>max) {
max=cgpa[j]
max_index=
j;
Double temp1=cgpa[remaining-1];
cgpa[remaining-1]=max;
cgpa[max_index]=temp1;
String temp2=names[remaining-1];
names[remaining-1]=names[max_index];
names[max_index]=temp2;
String temp3=regd[remaining-1];
regd[remaining-1]=regd[max_index];
regd[max_index]=temp3;
remaining--;
System.out.println("After sorting");
print(names,regd,cgpa,n);
OUTPUT:
21BCE97
MANIKANTA
21BCE97
MANIKANTA
EXPIREMENT-5.1
LINEAR SEARCH:
CODE:
OUTPUT:
21BCE97
MANIKANTA
BINARY SEARCH:
CODE:
class BinarySearch {
int binarySearch(int arr[], int l, int r, int x)
{
if (r >= l) {
int mid = l + (r - l) /
2;if (arr[mid] == x)
return
mid; if
(arr[mid] > x)
return binarySearch(arr, l, mid - 1, x);
return binarySearch(arr, mid + 1, r, x);
}
return -1;
}
public static void main(String args[])
{
BinarySearch ob = new BinarySearch();
int arr[] = { 2, 3, 4, 10, 40 };
int n =
arr.length;int x
= 10;
int result = ob.binarySearch(arr, 0, n - 1, x);if
(result == -1)
System.out.println("Element not present");
else
System.out.println("Element found at index "
+ result);
}
}
21BCE97
MANIKANTA
OUTPUT:
21BCE97
MANIKANTA
EXPIREMENT-5.2
Code:
import java.util.*;
/* Driver Code */
visiting");hm.put(5,
"Hello");
hm.put(1, "website");
hm.put(2, "Javatpoint");
/* Display the
Hashtable */
System.out.println(
hm);
21BCE97
MANIKANTA
OUTPUT:
21BCE97
MANIKANTA
21BCE97
MANIKANTA
EXPIREMENT-6.1
Code:
import java.io.*;
import java.util.*;
class Graph {
private int V; // No. of
vertices private
LinkedList<Integer> adj[];
@SuppressWarnings("unchecked") Graph(int v)
{
V = v;
adj = new
LinkedList[v];for
(int i = 0; i < v; ++i)
adj[i] = new LinkedList();
}
Iterator<Integer> i =
adj[v].listIterator();while
(i.hasNext()) {
int n =
i.next();if
(!visited[
n])
DFSUtil(n, visited);
}
}
void DFS(int v)
{
boolean visited[] = new boolean[V];
DFSUtil(v, visited);
}
21BCE97
MANIKANTA
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
21BCE97
MANIKANTA
g.addEdge(3, 3);
System.out.println(
"Following is Depth First Traversal "
+ "(starting from vertex 2)");
g.DFS(2);
}
}
OUTPUT:
21BCE97
MANIKANTA
EXPIREMENT-6.2
Aim: Java program to print BFS traversal from a given source vertex. BFS(int s) traverses vertices
reachable froms.
Code:
import java.io.*;
import
java.util.*;
Graph(int v)
{
V = v;
adj = new
LinkedList[v];for
(int i=0; i<v; ++i)
adj[i] = new LinkedList();
}
void BFS(int s)
{
LinkedList<Integer>();visited[s]=true;
queue.add(s);
while (queue.size() != 0)
{
s = queue.poll();
System.out.print(s+" ");
Iterator<Integer> i =
adj[s].listIterator();while
21BCE97
MANIKANTA
(i.hasNext())
{
int n =
i.next();
if (!
visite
d[n])
21BCE97
MANIKANTA
{
visited[n]
= true;
queue.ad
d(n);
}
}
}
}
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);
g.BFS(2);
}
}
21BCE97
MANIKANTA
OUTPUT:
21BCE97