m.e data structures lab

Post on 27-Oct-2014

192 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

M.E Data Structures Lab for I Year M.E Styudents

TRANSCRIPT

Ex no: 1

Date:

MIN HEAP

AIM

To implement the min heap structure with insert and delete minimum operation using Java program

ALGORITHM

Step 4:

Step 5:

Step 6:

Step 1: Step 2: Step 3:

Start the program by creating function with min heap property Two functions namely insert () and deletemin() are created The insert () is used to insert new element in the tree structure with heap property. The deletemin() is used to delete the minimum element which is usually a root node. The two operations are performed satisfying heapness and completeness property. End of the program.

1

CS9215 - DATASTRUCTURES LAB

PROGRAM :

import java.io.*;

class heapalg

{

int maxsize=100,size;

int[] h=new int[maxsize];

public int leftchild(int i)

{

return 2*i;

}

public int rightchild(int i)

{

return 2*i + 1;

}

public int parent(int i)

{

return i/2;

}

public boolean isleaf(int i)

{

return ((i<=size) && (i>size/2));

}

public void swap(int i,int j)

{

int t;

t=h[i];h[i]=h[j];h[j]=t;

}

public void display()

{

System.out.println("The heap elements are:"+"\n");

for(int i=1;i<=size;i++)

System.out.println("\n"+h[i]);

}

public void insert()

{

size++;

if(size>maxsize)

System.out.println("Heapfull");

else

{

try

2

CS9215 - DATASTRUCTURES LAB

{

System.out.println("Enter the element:");

DataInputStream din=new DataInputStream(System.in);

h[size]=Integer.parseInt(din.readLine());

}

catch(Exception e) { }

insertelt(size);

}

}

public void insertelt(int i)

{

while ((h[parent(i)]>h[i]))

{

int par=parent(i);

swap(par,i);

i=par;

}

}

public void delet()

{

if(size==0)

System.out.println("Heapempty");

else

{

System.out.println("The deleted min elt:"+h[1]);

h[1]=h[size--];

if(size!=0)

percolate(1);

}

}

public void percolate(int i)

{

while(!isleaf(i))

{

int small=leftchild(i);

if( (small<size)&& h[small] > h[small+1])

small+=1;

if(h[small] < h[i])

swap(small,i);

i=small;

}

}

}

class minheap

3

CS9215 - DATASTRUCTURES LAB

{

public static void main(String args[]) throws IOException

{

int ch=0,cont=0;

heapalg h1=new heapalg();

do

{

System.out.println("\tMIN HEAP \n 1.Insert \n 2.Delete Min");

DataInputStream din=new DataInputStream(System.in);

try

{

ch=Integer.parseInt(din.readLine());

}

catch(Exception e) { }

if(ch==1)

{

h1.insert();

h1.display();

}

else if(ch==2)

{

h1.delet();

h1.display();

}

else

{

System.out.println("Enter the correct choice");

}

System.out.println("press 1 to continue:");

try

{

cont=Integer.parseInt(din.readLine());

}

catch(Exception e) { }

}while(cont==1);

}

}

4

CS9215 - DATASTRUCTURES LAB

OUTPUT:

I:\M.E\Sem - I\DS Lab\01>javac minheap.java

Note: minheap.java uses or overrides a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

I:\M.E\Sem - I\DS Lab\01>java minheap

MIN HEAP

1. Insert

2. Delete

1

Enter the element :

23

The heap elements are :

23

Press 1 to continue...

1

MIN HEAP

1. Insert

2. Delete

1

Enter the element :

56

The heap elements are :

23

56

Press 1 to continue...

1

MIN HEAP

1. Insert

2. Delete

1

Enter the element :

43

The heap elements are :

23

56

43

Press 1 to continue...

1

MIN HEAP

1. Insert

2. Delete

1

Enter the element :

16

The heap elements are :

16

23

43

56

5

CS9215 - DATASTRUCTURES LAB

Press 1 to continue...

1

MIN HEAP

1. Insert

2. Delete

1

Enter the element :

58

The heap elements are :

16

23

43

56

58

Press 1 to continue...

1

MIN HEAP

1. Insert

2. Delete

1

Enter the element :

5

The heap elements are :

5

23

16

56

58

43

Press 1 to continue...

1

MIN HEAP

1. Insert

2. Delete

1

Enter the element :

30

The heap elements are :

5

23

16

56

58

43

30

Press 1 to continue...

1

MIN HEAP

1. Insert

2. Delete

6

CS9215 - DATASTRUCTURES LAB

2

The deleted min elt :5

The heap elements are :

16

23

30

56

58

43

Press 1 to continue...

1

MIN HEAP

1. Insert

2. Delete

2

The deleted min elt :16

The heap elements are :

23

43

30

56

58

Press 1 to continue...

1

MIN HEAP

1. Insert

2. Delete

2

The deleted min elt :23

The heap elements are :

30

43

58

56

Press 1 to continue...

1

MIN HEAP

1. Insert

2. Delete

2

The deleted min elt :30

The heap elements are :

43

56

58

Press 1 to continue...

3

I:\M.E\Sem - I\DS Lab\01>

7

CS9215 - DATASTRUCTURES LAB

RESULT :

Thus the program f or Minheap using Java has been implemented and executed

Successfully.

8

CS9215 - DATASTRUCTURES LAB

Ex no: 2

Date:

DEAPS

AIM

To implement program for doubly ended heaps (deaps) structure with insert and

delete operations using java.

ALGORITHM

Step 6: Step 7:

Step 1: Step 2: Step 3: Step 4: Step 5:

Start the program by creating Deap Structure. Perform insert and delete functions. The insert() is done with 2 methods namely maxinsert() and mininsert(). The delete() is done with 2 methods namely deletemax() and deletemin() The leftChild and rightChild are compared and the appropriate element is placed in the root node. After the insert and delete operation Deap elements are displayed. Stop of the program.

9

CS9215 - DATASTRUCTURES LAB

PROGRAM :

import java.io.*;

class deapsalg

{

int maxsize=100,size;

int[] h=new int[maxsize+1];

public int leftchild(int i)

{

return 2*i;

}

public int rightchild(int i)

{

return 2*i + 1;

}

public int parent(int i)

{

return i/2;

}

public boolean isleaf(int i)

{

return ((i<=size) && (i>size/2));

}

public void swap(int i,int j)

{

int t;

t=h[i];h[i]=h[j];h[j]=t;

}

public void display()

{

System.out.println("The deaps elements are:");

for(int i=1;i<=size+1;i++)

System.out.println("\n"+h[i]);

}

public int MaxHeap(int i)

{

int t=i;

while(t!=2 && t!=3)

t=t/2;

if(t==2)

{

10

CS9215 - DATASTRUCTURES LAB

return 0;

}

else

{

return 1;

}

}

public int MinPartner(int p)

{

int powvalue=(int) ((Math.floor(Math.log(p)/Math.log(2)))-1);

int partner=p-(int)(Math.pow(2,powvalue));

return partner;

}

public int MaxPartner(int p)

{

int powvalue=(int) ((Math.floor(Math.log(p)/Math.log(2)))-1);

int partner=p+(int)(Math.pow(2,powvalue));

if(partner>size+1)

partner/=2;

return partner;

}

public void MinInsert(int i)

{

while (parent(i)!=1 && (h[parent(i)]>h[i]))

{

int par=parent(i);

swap(par,i);

i=par;

}

}

public void MaxInsert(int i)

{

while (parent(i) !=1 && (h[parent(i)]<h[i]))

{

int par=parent(i);

swap(par,i);

i=par;

}

}

public void insert()

11

CS9215 - DATASTRUCTURES LAB

{

int newelt=0;

size++;

if(size>maxsize)

System.out.println("Deap full");

else

{

try

{

System.out.println("Enter the element:");

DataInputStream din=new DataInputStream(System.in);

newelt=Integer.parseInt(din.readLine());

}

catch(Exception e){ }

if(size==1)

{

h[2]=newelt;

return;

}

int p=size+1;

h[p]=newelt;

switch(MaxHeap(p))

{

case 1:

int partner=MinPartner(p);

if(h[partner]>h[p])

{

swap(p,partner);

MinInsert(partner);

}

else

MaxInsert(p);

break;

case 0:

partner=MaxPartner(p);

if(h[partner]<h[p])

{

swap(p,partner);

MaxInsert(partner);

}

else

MinInsert(p);

break;

default:

System.out.println("ERROR");

}

}

}

12

CS9215 - DATASTRUCTURES LAB

public void deletemin()

{

if(size==0)

System.out.println("Deap empty");

else

{

System.out.println("The deleted min elt:"+ h[2]);

int i;

int p=size+1;

int t=h[p];

size--;

int small;

for( i=2;2*i<=size+1;i=small)

{

if(h[rightchild(i)]<h[leftchild(i)])

small=rightchild(i);

else

small=leftchild(i);

h[i]=h[small];

}

p=i;

h[p]=t;

for(i=2;i<=size+1;i++)

{

switch(MaxHeap(i))

{

case 1:

int partner=MinPartner(i);

if(h[partner]>h[i])

{

swap(i,partner);

MinInsert(partner);

}

else

MaxInsert(i);

break;

case 0:

partner=MaxPartner(i);

if(h[partner]<h[i])

{

swap(i,partner);

MaxInsert(partner);

}

else

MinInsert(i);

break;

13

CS9215 - DATASTRUCTURES LAB

default:

System.out.println("ERROR");

}

}

}

}

public void deletemax()

{

if(size==0)

System.out.println("Deap empty");

else

{

System.out.println("The deleted max elt:"+ h[3]);

int i;

int p=size+1;

int t=h[p];

size--;

int big;

for( i=3;2*i<=size+1;i=big)

{

if(h[rightchild(i)]>h[leftchild(i)])

big=rightchild(i);

else

big=leftchild(i);

h[i]=h[big];

}

p=i;

h[p]=t;

for(i=2;i<=size+1;i++)

{

switch(MaxHeap(i))

{

case 1:

int partner=MinPartner(i);

if(h[partner]>h[i])

{

swap(i,partner);

MinInsert(partner);

}

else

MaxInsert(i);

break;

case 0:

partner=MaxPartner(i);

if(h[partner]<h[i])

{

14

CS9215 - DATASTRUCTURES LAB

swap(i,partner);

MaxInsert(partner);

}

else

MinInsert(i);

break;

default:

System.out.println("ERROR");

}

}

}

}

}

public class deaps

{

public static void main(String args[]) throws IOException

{

int ch=0,cont=0;

deapsalg h1=new deapsalg();

do

{

System.out.println(" DEAPs \n1.Insert \n2.Delete Min \n3.Delete Max");

DataInputStream din=new DataInputStream(System.in);

try

{

ch=Integer.parseInt(din.readLine());

}

catch(Exception e){ }

if(ch==1)

{

h1.insert();

h1.display();

}

else if(ch==2)

{

h1.deletemin();

h1.display();

}

else if(ch==3)

{

h1.deletemax();

h1.display();

}

else

{

System.out.println("Enter the correct choice");

15

CS9215 - DATASTRUCTURES LAB

}

System.out.println("press 1 to continue:");

try

{

cont=Integer.parseInt(din.readLine());

}

catch(Exception e){ }

}while(cont==1);

}

}

16

CS9215 - DATASTRUCTURES LAB

OUTPUT :

I:\M.E\Sem - I\DS Lab\02>javac deaps.java

Note: deaps.java uses or overrides a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

I:\M.E\Sem - I\DS Lab\02>java deaps

DEAPs

1.Insert

2.Delete Min

3.Delete Max

1

Enter the element:

60

The deaps elements are:

0

60

press 1 to continue:

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

1

Enter the element:

90

The deaps elements are:

0

60

90

press 1 to continue:

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

1

Enter the element:

36

The deaps elements are:

0

36

90

60

press 1 to continue:

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

1

17

CS9215 - DATASTRUCTURES LAB

Enter the element:

70

The deaps elements are:

0

36

90

60

70

press 1 to continue:

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

1

Enter the element:

20

The deaps elements are:

0

20

90

36

70

60

press 1 to continue:

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

1

Enter the element:

47

The deaps elements are:

0

20

90

36

47

60

70

press 1 to continue:

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

1

Enter the element:

8

18

CS9215 - DATASTRUCTURES LAB

The deaps elements are:

0

8

90

20

47

60

70

36

press 1 to continue:

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

1

Enter the element:

35

The deaps elements are:

0

8

90

20

47

60

70

36

35

press 1 to continue:

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

1

Enter the element:

19

The deaps elements are:

0

8

90

20

19

60

70

36

35

47

press 1 to continue:

1

19

CS9215 - DATASTRUCTURES LAB

DEAPs

1.Insert

2.Delete Min

3.Delete Max

2

The deleted min elt:8

The deaps elements are:

0

19

90

20

47

60

70

36

35

press 1 to continue:

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

2

The deleted min elt:19

The deaps elements are:

0

20

90

35

47

60

70

36

press 1 to continue:

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

3

The deleted max elt:90

The deaps elements are:

0

20

70

35

36

60

47

press 1 to continue:

20

CS9215 - DATASTRUCTURES LAB

1

DEAPs

1.Insert

2.Delete Min

3.Delete Max

3

The deleted max elt:70

The deaps elements are:

0

20

60

35

36

47

press 1 to continue:

2

I:\M.E\Sem - I\DS Lab\02>

21

CS9215 - DATASTRUCTURES LAB

RESULT :

Thus the program for Doubly ended heaps (Deaps) using Java has been implemented

and executed successfully.

22

CS9215 - DATASTRUCTURES LAB

Ex no: 3

Date:

LEFTIST HEAP

AIM

To implement the leftist heap with insert and deletemin operation using Java.

ALGORITHM

Step 1: Step 2: Step 3:

Step 4: Step 5: Step 6: Step 7:

Start the program by defining function. We know heap as the root node with minimum element. The insert and delete operations are performed with the help of combining 2 trees. The insert operation is performed by combining the two leftist trees. The deletemin() is used to delete the minimum element in the heap. After the insert and delete operations leftist heap elements are displayed. Stop the program.

23

CS9215 - DATASTRUCTURES LAB

PROGRAM :

import java.io.*;

class node

{

public int data;

public node LC,RC;

public int shortest;

}

class minleftist

{

node root = null;

public void insert()

{

int newelt=0;

try

{

System.out.println("Enter the element:");

DataInputStream din=new DataInputStream(System.in);

newelt=Integer.parseInt(din.readLine());

}

catch(Exception e){}

node temp = new node();

temp.data=newelt;

temp.LC=temp.RC=null;

temp.shortest=1;

if(root==null)

root=temp;

else

root=meld(root,temp);

}

public node meld(node a, node b)

{

if(a.data > b.data)

{

node t;

t=a;

a=b;

b=t;

}

if(a.RC==null)

a.RC=b;

else

a.RC=meld(a.RC,b);

if((a.LC==null) || (a.LC.shortest < a.RC.shortest))

{

24

CS9215 - DATASTRUCTURES LAB

node t=new node();

t=a.LC;

a.LC=a.RC;

a.RC=t;

}

if(a.RC==null)

a.shortest=1;

else

a.shortest=a.RC.shortest+1;

return a;

}

public void remove()

{

System.out.println("Deleted element is "+root.data+"\n");

root=meld(root.LC,root.RC);

}

public void display()

{

if(root==null)

System.out.println("EMPTY");

else

{

System.out.println("\nIn Order");

dispin(root);

}

}

public void dispin(node currentnode)

{

if(currentnode!=null)

{

dispin(currentnode.LC);

System.out.println(currentnode.data+" "+"SHORTEST "+currentnode.shortest);

dispin(currentnode.RC);

}

}

};

class LeftistTree

{

public static void main(String args[ ])throws IOException

{

int ch=0,cont=0;

minleftist m = new minleftist();

do

{

25

CS9215 - DATASTRUCTURES LAB

System.out.println(" LEFTIST TREE \n1. Insert \n2. Delete");

DataInputStream din = new DataInputStream(System.in);

try

{

ch=Integer.parseInt(din.readLine());

}

catch(Exception e){ }

if(ch==1)

{

m.insert();

m.display();

}

else if(ch==2)

{

m.remove();

m.display();

}

else

{

System.out.println("Enter the correct choice");

}

System.out.println("press 1 to continue:");

try

{

cont=Integer.parseInt(din.readLine());

}

catch(Exception e){ }

}while(cont==1);

}

}

26

CS9215 - DATASTRUCTURES LAB

OUTPUT :

H:\M.E\Sem - I\DS Lab\03>javac LeftistTree.java

Note: LeftistTree.java uses or overrides a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

H:\M.E\Sem - I\DS Lab\03>java LeftistTree

LEFTIST TREE

1. Insert

2. Delete

1

Enter the element:

8

In Order

8 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

2. Delete

1

Enter the element:

23

In Order

23 SHORTEST 1

8 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

2. Delete

1

Enter the element:

13

In Order

23 SHORTEST 1

8 SHORTEST 2

13 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

2. Delete

1

Enter the element:

52

In Order

23 SHORTEST 1

8 SHORTEST 2

52 SHORTEST 1

27

CS9215 - DATASTRUCTURES LAB

13 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

2. Delete

1

Enter the element:

10

In Order

23 SHORTEST 1

8 SHORTEST 2

52 SHORTEST 1

13 SHORTEST 1

10 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

2. Delete

1

Enter the element:

6

In Order

23 SHORTEST 1

8 SHORTEST 2

52 SHORTEST 1

13 SHORTEST 1

10 SHORTEST 1

6 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

2. Delete

1

Enter the element:

45

In Order

23 SHORTEST 1

8 SHORTEST 2

52 SHORTEST 1

13 SHORTEST 1

10 SHORTEST 1

6 SHORTEST 2

45 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

28

CS9215 - DATASTRUCTURES LAB

2. Delete

2

Deleted element is 6

In Order

52 SHORTEST 1

13 SHORTEST 1

10 SHORTEST 2

45 SHORTEST 1

8 SHORTEST 2

23 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

2. Delete

2

Deleted element is 8

In Order

52 SHORTEST 1

13 SHORTEST 1

10 SHORTEST 2

45 SHORTEST 1

23 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

2. Delete

2

Deleted element is 10

In Order

52 SHORTEST 1

13 SHORTEST 2

45 SHORTEST 1

23 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

2. Delete

2

Deleted element is 13

In Order

45 SHORTEST 1

23 SHORTEST 2

52 SHORTEST 1

press 1 to continue:

1

LEFTIST TREE

1. Insert

29

CS9215 - DATASTRUCTURES LAB

2. Delete

2

Deleted element is 23

In Order

52 SHORTEST 1

45 SHORTEST 1

press 1 to continue:

30

CS9215 - DATASTRUCTURES LAB

RESULT :

Thus the program for leftist heap using Java has been implemented and

executed successfully.

31

CS9215 - DATASTRUCTURES LAB

Step 1: Step 2: Step 3: Step 4: Step 5:

Ex no: 4

Date:

AVL TREE

AIM To implement the AVL tree with insert & delete operations using Java.

ALGORITHM

Start the program by defining the functions. Insert the elements to the AVL tree. Check the tree if it is balanced or not. The balance factor is one of 0, 1 and -1. If it is not balanced, balance the tree using (i) Left-left

(ii) Left-right

(iii) Right-left (iv) Right-right Balancing

And if the tree is balanced and then the insert() and the delete() operations are performed. Stop the program.

Step 6:

Step 7:

32

CS9215 - DATASTRUCTURES LAB

PROGRAM :

import java.io.*;

class node

{

public int data;

public node LC,RC;

public int bf;

}

class avltree

{

node root = null;

public boolean insert()

{

int newelt=0;

try

{

System.out.println("Enter the element:");

DataInputStream din=new DataInputStream(System.in);

newelt=Integer.parseInt(din.readLine());

}

catch(Exception e) { }

if(root==null)

{

node y=new node();

y.data=newelt;

y.bf=0;

y.LC=null;

y.RC=null;

root=y;

return true;

}

node f,a,q,p;

node b,c;

int d;

node y=new node();

boolean found, unbalanced;

f=null;

a=root;

p=root;

q=null;

found=false;

while (p!=null && found!=true)

{

if(p.bf!=0)

{

a=p;

f=q;

33

CS9215 - DATASTRUCTURES LAB

}

if(newelt<p.data)

{

q=p;

p=p.LC;

}

else if(newelt>p.data)

{

q=p;

p=p.RC;

}

else

{

y=p;

found=true;

}

}

if(found==false)

{

y.data=newelt;

y.bf=0;

y.LC=null;

y.RC=null;

if(newelt<q.data)

q.LC=y;

else

q.RC=y;

if(newelt >a.data)

{

p=a.RC;

b=p;

d=-1;

}

else

{

p=a.LC;

b=p;

d=1;

}

while(p!=y)

{

if(newelt > p.data)

{

p.bf=-1;

p=p.RC;

}

else

{

p.bf=1;

p=p.LC;

34

CS9215 - DATASTRUCTURES LAB

}

}

unbalanced=true;

if((a.bf==0)||((a.bf+d)==0))

{

a.bf+=d;

unbalanced=false;

}

if(unbalanced==true)

{

if(d==1)

{

if(b.bf==1)

{

System.out.println("LL imbalance");

a.LC=b.RC;

b.RC=a;

a.bf=0;

b.bf=0;

}

else

{

System.out.println("LR imbalance");

c=b.RC;

b.RC=c.LC;

a.LC=c.RC;

c.LC=b;

c.RC=a;

switch(c.bf)

{

case 1:

a.bf=-1;

b.bf=0;

break;

case -1:

a.bf=0;

b.bf=1;

break;

case 0:

a.bf=0;

b.bf=0;

break;

}

c.bf=0;

b=c;

}

}

else

{

if(b.bf==-1)

35

CS9215 - DATASTRUCTURES LAB

{

System.out.println("RR imbalance");

a.RC=b.LC;

b.LC=a;

a.bf=0;

b.bf=0;

}

else

{

System.out.println("RL imbalance");

c=b.LC;

b.LC=c.RC;

a.RC=c.LC;

c.RC=b;

c.LC=a;

switch(c.bf)

{

case 1:

a.bf=0;

b.bf=-1;

break;

case -1:

a.bf=1;

b.bf=0;

break;

case 0:

a.bf=0;

b.bf=0;

break;

}

c.bf=0;

b=c;

}

}

if(f==null)

root=b;

else if(a==f.LC)

f.LC=b;

else if(a==f.RC)

f.RC=b;

}

return true;

}

return false;

}

public void display()

{

if(root==null)

36

CS9215 - DATASTRUCTURES LAB

System.out.println("EMPTY");

else

{

System.out.println("\nIn Order");

dispin(root);

}

}

public void dispin(node currentnode)

{

if(currentnode!=null)

{

dispin(currentnode.LC);

System.out.println(currentnode.data+" "+"BF "+currentnode.bf);

dispin(currentnode.RC);

}

}

}

class AVLTreeImp

{

public static void main(String args[ ])throws IOException

{

int ch=0,cont=0;

avltree a = new avltree();

do

{

System.out.println(" AVLTREES \n 1. Insert ");

DataInputStream din = new DataInputStream(System.in);

try

{

ch=Integer.parseInt(din.readLine());

}

catch(Exception e) { }

if(ch==1)

{

boolean y=true;

y=a.insert();

a.display();

if(y==false)

System.out.println("Data already exists");

}

else

{

System.out.println("Enter the correct choice");

}

System.out.println("press 1 to continue:");

37

CS9215 - DATASTRUCTURES LAB

try

{

cont=Integer.parseInt(din.readLine());

}

catch(Exception e) { }

}while(cont==1);

}

}

38

CS9215 - DATASTRUCTURES LAB

OUTPUT :

AVLTREES

1. Insert

1

Enter the element:

25

In Order

25 BF 0

press 1 to continue:

1

AVLTREES

1. Insert

1

Enter the element:

36

In Order

25 BF -1

36 BF 0

press 1 to continue:

1

AVLTREES

1. Insert

1

Enter the element:

50

RR imbalance

In Order

25 BF 0

36 BF 0

50 BF 0

press 1 to continue:

1

AVLTREES

1. Insert

1

Enter the element:

10

In Order

10 BF 0

25 BF 1

36 BF 1

50 BF 0

press 1 to continue:

1

AVLTREES

1. Insert

1

Enter the element:

39

CS9215 - DATASTRUCTURES LAB

5

LL imbalance

In Order

5 BF 0

10 BF 0

25 BF 0

36 BF 1

50 BF 0

press 1 to continue:

1

AVLTREES

1. Insert

1

Enter the element:

20

LR imbalance

In Order

5 BF 0

10 BF 0

20 BF 0

25 BF 0

36 BF -1

50 BF 0

press 1 to continue:

1

AVLTREES

1. Insert

1

Enter the element:

90

RR imbalance

In Order

5 BF 0

10 BF 0

20 BF 0

25 BF 0

36 BF 0

50 BF 0

90 BF 0

press 1 to continue:

1

AVLTREES

1. Insert

1

Enter the element:

2

In Order

2 BF 0

5 BF 1

10 BF 1

40

CS9215 - DATASTRUCTURES LAB

20 BF 0

25 BF 1

36 BF 0

50 BF 0

90 BF 0

press 1 to continue:

3

41

CS9215 - DATASTRUCTURES LAB

RESULT :

Thus the program for AVL Tree using Java has been implemented and

executed successfully.

42

CS9215 - DATASTRUCTURES LAB

Ex no: 5

Date:

B-TREE

AIM

To implement the b-tree with insert and delete operations using Java.

ALGORITHM

Step 1: Step 2: Step 3: Step 4:

Start the program by defining function. Declare the class btree The insert and delete operations are performed To insert, check if root is empty, if it is empty Insert the element as root. If it is greater insert it into right sub tree. Otherwise, insert it into left sub tree Use the function split, to split the nodes Call the function display to display data1, data2, address and parent End of the program

Step 5: Step 6: Step 7: Step 8: Step 9:

43

CS9215 - DATASTRUCTURES LAB

PROGRAM :

import java.io.*;

class bnode

{

int data1,data2;

bnode lptr,mptr,rptr,parent;

public void bnode()

{

this.data1=this.data2=0;

this.lptr=this.mptr=this.rptr=this.parent=null;

}

}

class btree

{

bnode root=null;

bnode p,p1;

bnode prev;

void insert(int ele)

{

bnode temp=new bnode();

temp.data1=ele;

if(root==null)

{

root=temp;

}

else

{

p1=root;

while(p1!=null)

{

prev=p1;

if(temp.data1<p1.data1)

p1=p1.lptr;

else if((temp.data1>p1.data1) &&(temp.data1<p1.data2))

p1=p1.mptr;

else

p1=p1.rptr;

}

p1=prev;

while(p1!=null)

{

if(p1.data2==0)

{

if(temp.data1<p1.data1)

44

CS9215 - DATASTRUCTURES LAB

{

int t=p1.data1;

p1.data1=temp.data1;

p1.data2=t;

p1.lptr=temp.lptr;

if(temp.lptr!=null)

temp.lptr.parent=p1;

p1.mptr=temp.rptr;

if(temp.rptr!=null)

temp.rptr.parent=p1;

}

else

{

p1.data2=temp.data1;

p1.mptr=temp.lptr;

if(temp.lptr!=null)

temp.lptr.parent=p1;

p1.rptr=temp.rptr;

if(temp.rptr!=null)

temp.rptr.parent=p1;

}

temp.parent=p1.parent;

break;

}

else if((p1.data1!=0) && (p1.data2!=0))

{

p1=split(temp,p1);

temp=p1;

p1=p1.parent;

}

}

}

display(root);

}

bnode split(bnode t,bnode p)

{

bnode n1=null;

bnode n2=null;

if(t.data1<p.data1)

{

if(p.mptr!=null)

n1=p.mptr;

if(p.rptr!=null)

n2=p.rptr;

p.lptr=new bnode();

p.lptr=t;

t.parent=p;

p.mptr=null;

p.rptr=new bnode();

45

CS9215 - DATASTRUCTURES LAB

p.rptr.data1=p.data2;

p.rptr.lptr=n1;

if(n1!=null)

p.rptr.lptr.parent=p.rptr;

p.rptr.rptr=n2;

if(n2!=null)

p.rptr.rptr.parent=p.rptr;

p.rptr.parent=p;

p.data2=0;

}

else if((t.data1>p.data1) && (t.data1<p.data2))

{

if(p.lptr!=null)

n1=p.lptr;

if(p.rptr!=null)

n2=p.rptr;

p.lptr=new bnode();

p.lptr.data1=p.data1;

p.lptr.parent=p;

p.data1=t.data1;

p.lptr.lptr=n1;

if(n1!=null)

p.lptr.lptr.parent=p.lptr;

p.lptr.rptr=t.lptr;

if(t.lptr!=null)

p.lptr.rptr.parent=p.lptr;

p.rptr=new bnode();

p.rptr.data1=p.data2;

p.rptr.rptr=n2;

if(n2!=null)

p.rptr.rptr.parent=p.rptr;

p.rptr.lptr=t.rptr;

if(t.rptr!=null)

p.rptr.lptr.parent=p.rptr;

p.rptr.parent=p;

p.data2=0;

p.mptr=null;

}

else

{

if(p.lptr!=null)

n1=p.lptr;

if(p.mptr!=null)

n2=p.mptr;

p.lptr=new bnode();

p.lptr.data1=p.data1;

p.lptr.parent=p;

p.mptr=null;

p.lptr.lptr=n1;

if(n1!=null)

46

CS9215 - DATASTRUCTURES LAB

p.lptr.lptr.parent=p.lptr;

p.lptr.rptr=n2;

if(n2!=null)

p.lptr.rptr.parent=p.lptr;

p.data1=p.data2;

p.data2=0;

p.rptr=new bnode();

p.rptr=t;

p.rptr.parent=p;

}

return p;

}

void display(bnode temp)

{

if(temp!=null)

{

display(temp.lptr);

display(temp.mptr);

display(temp.rptr);

System.out.println("data1::"+temp.data1+" data2::"+temp.

data2+" Address::"+temp+" parent::"+temp.parent);

}

}

}

class BTrees

{

public static void main(String[] args)throws IOException

{

System.out.println("B-Trees");

DataInputStream in=new DataInputStream(System.in);

btree bt=new btree();

int x,ch;

do

{

System.out.println("Enter the element");

x=Integer.parseInt(in.readLine());

bt.insert(x);

System.out.println("To continue...press 1");

ch=Integer.parseInt(in.readLine());

}while(ch==1);

}

}

47

CS9215 - DATASTRUCTURES LAB

OUTPUT :

B-Trees

Enter the element

20

data1::20 data2::0 Address::bnode@addbf1 parent::null

To continue...press 1

1

Enter the element

10

data1::10 data2::20 Address::bnode@addbf1 parent::null

To continue...press 1

1

Enter the element

30

data1::10 data2::0 Address::bnode@9304b1 parent::bnode@addbf1

data1::30 data2::0 Address::bnode@190d11 parent::bnode@addbf1

data1::20 data2::0 Address::bnode@addbf1 parent::null

To continue...press 1

1

Enter the element

45

data1::10 data2::0 Address::bnode@9304b1 parent::bnode@addbf1

data1::30 data2::45 Address::bnode@190d11 parent::bnode@addbf1

data1::20 data2::0 Address::bnode@addbf1 parent::null

To continue...press 1

1

Enter the element

35

data1::10 data2::0 Address::bnode@9304b1 parent::bnode@addbf1

data1::30 data2::0 Address::bnode@a90653 parent::bnode@addbf1

data1::45 data2::0 Address::bnode@de6ced parent::bnode@addbf1

data1::20 data2::35 Address::bnode@addbf1 parent::null

To continue...press 1

1

Enter the element

12

data1::10 data2::12 Address::bnode@9304b1 parent::bnode@addbf1

data1::30 data2::0 Address::bnode@a90653 parent::bnode@addbf1

data1::45 data2::0 Address::bnode@de6ced parent::bnode@addbf1

data1::20 data2::35 Address::bnode@addbf1 parent::null

To continue...press 1

1

Enter the element

8

data1::8 data2::0 Address::bnode@c17164 parent::bnode@9304b1

data1::12 data2::0 Address::bnode@1fb8ee3 parent::bnode@9304b1

data1::10 data2::0 Address::bnode@9304b1 parent::bnode@addbf1

data1::30 data2::0 Address::bnode@a90653 parent::bnode@61de33

48

CS9215 - DATASTRUCTURES LAB

data1::45 data2::0 Address::bnode@de6ced parent::bnode@61de33

data1::35 data2::0 Address::bnode@61de33 parent::bnode@addbf1

data1::20 data2::0 Address::bnode@addbf1 parent::null

To continue...press 1

1

Enter the element

18

data1::8 data2::0 Address::bnode@c17164 parent::bnode@9304b1

data1::12 data2::18 Address::bnode@1fb8ee3 parent::bnode@9304b1

data1::10 data2::0 Address::bnode@9304b1 parent::bnode@addbf1

data1::30 data2::0 Address::bnode@a90653 parent::bnode@61de33

data1::45 data2::0 Address::bnode@de6ced parent::bnode@61de33

data1::35 data2::0 Address::bnode@61de33 parent::bnode@addbf1

data1::20 data2::0 Address::bnode@addbf1 parent::null

To continue...press 1

1

Enter the element

9

data1::8 data2::9 Address::bnode@c17164 parent::bnode@9304b1

data1::12 data2::18 Address::bnode@1fb8ee3 parent::bnode@9304b1

data1::10 data2::0 Address::bnode@9304b1 parent::bnode@addbf1

data1::30 data2::0 Address::bnode@a90653 parent::bnode@61de33

data1::45 data2::0 Address::bnode@de6ced parent::bnode@61de33

data1::35 data2::0 Address::bnode@61de33 parent::bnode@addbf1

data1::20 data2::0 Address::bnode@addbf1 parent::null

To continue...press 1

1

Enter the element

32

data1::8 data2::9 Address::bnode@c17164 parent::bnode@9304b1

data1::12 data2::18 Address::bnode@1fb8ee3 parent::bnode@9304b1

data1::10 data2::0 Address::bnode@9304b1 parent::bnode@addbf1

data1::30 data2::32 Address::bnode@a90653 parent::bnode@61de33

data1::45 data2::0 Address::bnode@de6ced parent::bnode@61de33

data1::35 data2::0 Address::bnode@61de33 parent::bnode@addbf1

data1::20 data2::0 Address::bnode@addbf1 parent::null

To continue...press 1

49

CS9215 - DATASTRUCTURES LAB

RESULT :

Thus the program for b-tree using Java has been implemented and executed

successfully.

50

CS9215 - DATASTRUCTURES LAB

Ex no: 6

Date:

TRIES

AIM

To implement the tries with insert operation using Java.

ALGORITHM

Step 1: Step 2: Step 3:

Step 4:

Step 5:

Step 6:

Step 7: Step 8:

Start the program by defining the functions. First initialize the node to null To find the particular element use function finds Check the element to root node, if it is not found check for left or right side of the root. If it’s found return the element To insert the particular element read that element and Insert the element with tag as 0 and level as 1. To display the elements, display if root as null, print as empty, otherwise call empty Print the current node in left sub tree in the format as currentnode.data + level and tag. Display current node in the right sub tree End of the program

51

CS9215 - DATASTRUCTURES LAB

PROGRAM :

import java.io.*;

class node

{

public int tag,level;

public int data;

public node LC,RC,par;

}

class trie

{

public node cptr;

public node root=null;

public node find(int key)

{

int item=key;

node temp=root;

while(temp!=null)

{

cptr=temp;

if(temp.tag==1)

{

if((item & 1)==0)

{

temp=temp.LC;

item=item >> 1;

}

else

{

temp=temp.RC;

item=item >> 1;

}

}

else

{

if(key==temp.data)

{

return temp;

}

else

break;

}

}

return null;

}

52

CS9215 - DATASTRUCTURES LAB

public void insert()

{

int key=0;

try

{

System.out.println("Enter the element:");

DataInputStream din=new DataInputStream(System.in);

key=Integer.parseInt(din.readLine());

}

catch(Exception e) { }

if(root==null)

{

root=new node();

root.data=key;

root.tag=0;

root.level=1;

root.par=null;

root.LC=null;

root.RC=null;

}

else

{

{

node temp=find(key);

if(temp==null)

temp=cptr;

if(temp.tag==0)

{

node n1=new node();

node n2=new node();

temp.tag=1;

n1.tag=0;n2.tag=0;

int k1=temp.data;

temp.data=0;

int k2=key;

int kk1;

n1.data=k1;

n2.data=k2;

int lv=1;

while ( (k1 & 1 ) ==(k2 & 1 ))

{

kk1=k1;

k1=k1 >> 1;

k2=k2 >> 1;

if(lv>=temp.level)

{

node n3=new node();

n3.tag=1;

if((kk1 & 1)==0)

{

53

CS9215 - DATASTRUCTURES LAB

temp.LC=n3;

temp.RC=null;

n3.level=temp.level+1;

}

else

{

temp.RC=n3;

temp.LC=null;

n3.level=temp.level+1;

}

n3.par=temp;

temp=n3;

lv++;

}

else

lv++;

}

if((k1 & 1)==0)

{

temp.LC=n1;

temp.RC=n2;

n1.level=n2.level=temp.level+1;

}

else

{

temp.LC=n2;

temp.RC=n1;

n1.level=n2.level=temp.level+1;

n1.par=temp;

}

n2.par=temp;

}

else

{

node n1=new node();

n1.tag=0;

n1.data=key;

if(temp.LC==null)

temp.LC=n1;

else

temp.RC=n1;

n1.level=temp.level+1;

n1.par=temp;

}

}

System.out.println("Element already exists");

}

}

public void display()

54

CS9215 - DATASTRUCTURES LAB

{

if(root==null)

System.out.println("EMPTY");

else

{

System.out.println("\nIn Order");

dispin(root);

}

}

public void dispin(node currentnode)

{

if(currentnode!=null)

{

dispin(currentnode.LC);

System.out.println(currentnode.data+" \t "+"LEVEL- "+currentnode.level+" "+"TAG-

"+currentnode.tag);

dispin(currentnode.RC);

}

}

}

class TrieImp

{

public static void main(String args[ ])throws IOException

{

int ch=0,cont=0;

trie t = new trie();

do

{

System.out.println("\t TRIES \n 1. Insert ");

DataInputStream din = new DataInputStream(System.in);

try

{

ch=Integer.parseInt(din.readLine());

}

catch(Exception e) { }

if(ch==1)

{

t.insert();

t.display();

}

else

{

System.out.println("Enter the correct choice :");

}

System.out.println("press 1 to continue:");

try

{

55

CS9215 - DATASTRUCTURES LAB

cont=Integer.parseInt(din.readLine());

}

catch(Exception e) { }

}while(cont==1);

}

}

56

CS9215 - DATASTRUCTURES LAB

OUTPUT :

TRIES

1. Insert

1

Enter the element:

1234

In Order

1234 LEVEL- 1 TAG-0

press 1 to continue:

1

TRIES

1. Insert

1

Enter the element:

4321

Element already exists

In Order

1234 LEVEL- 2 TAG-0

0 LEVEL- 1 TAG-1

4321 LEVEL- 2 TAG-0

press 1 to continue:

1

TRIES

1. Insert

1

Enter the element:

5634

Element already exists

In Order

0 LEVEL- 2 TAG-1

5634 LEVEL- 6 TAG-0

0 LEVEL- 5 TAG-1

1234 LEVEL- 6 TAG-0

0 LEVEL- 4 TAG-1

0 LEVEL- 3 TAG-1

0 LEVEL- 1 TAG-1

4321 LEVEL- 2 TAG-0

press 1 to continue:

1

TRIES

1. Insert

1

Enter the element:

34

Element already exists

In Order

0 LEVEL- 2 TAG-1

5634 LEVEL- 7 TAG-0

0 LEVEL- 6 TAG-1

57

CS9215 - DATASTRUCTURES LAB

34 LEVEL- 7 TAG-0

0 LEVEL- 5 TAG-1

1234 LEVEL- 6 TAG-0

0 LEVEL- 4 TAG-1

0 LEVEL- 3 TAG-1

0 LEVEL- 1 TAG-1

4321 LEVEL- 2 TAG-0

press 1 to continue:

1

TRIES

1. Insert

1

Enter the element:

9821

Element already exists

In Order

0 LEVEL- 2 TAG-1

5634 LEVEL- 7 TAG-0

0 LEVEL- 6 TAG-1

34 LEVEL- 7 TAG-0

0 LEVEL- 5 TAG-1

1234 LEVEL- 6 TAG-0

0 LEVEL- 4 TAG-1

0 LEVEL- 3 TAG-1

0 LEVEL- 1 TAG-1

4321 LEVEL- 4 TAG-0

0 LEVEL- 3 TAG-1

9821 LEVEL- 4 TAG-0

0 LEVEL- 2 TAG-1

press 1 to continue:

1

TRIES

1. Insert

1

Enter the element:

921

Element already exists

In Order

0 LEVEL- 2 TAG-1

5634 LEVEL- 7 TAG-0

0 LEVEL- 6 TAG-1

34 LEVEL- 7 TAG-0

0 LEVEL- 5 TAG-1

1234 LEVEL- 6 TAG-0

0 LEVEL- 4 TAG-1

0 LEVEL- 3 TAG-1

0 LEVEL- 1 TAG-1

4321 LEVEL- 5 TAG-0

0 LEVEL- 4 TAG-1

921 LEVEL- 5 TAG-0

58

CS9215 - DATASTRUCTURES LAB

0 LEVEL- 3 TAG-1

9821 LEVEL- 4 TAG-0

0 LEVEL- 2 TAG-1

press 1 to continue:

3

59

CS9215 - DATASTRUCTURES LAB

RESULT :

Thus the program for tries using Java has been implemented and the output was

verified successfully.

60

CS9215 - DATASTRUCTURES LAB

Ex no: 7

Date:

QUICK SORT

AIM To write a Java program for the implementation the quick sort

ALGORITHM

Step1: start the program

Step2: Declare and initialize the array size

Step3: Enter the number of elements to be quick sorted.

Step4: Enter the elements using for loop

Step5: call the function quick (1, noe) Void quick (int first,int last)

Step6: if the first element is less than the last

(a) then the first element is taken as the pivot &i=first, &j=last (b)The condition is checked for i<j if true

Step7: set a loop to check the elements

(a) while (a[pivot]>=a[i]&&i<last)i++; (b) while (a[pivot]>=a[j]&&j>first)j--;

Step8: if (i>j)

Swap (i,j)

Step9: sort the elements and display the sorted values.

61

CS9215 - DATASTRUCTURES LAB

PROGRAM :

import java.io.*;

class quicksortalg

{

int noe;

int[] a=new int[100];

public void sort()

{

try

{

System.out.println("Enter the number of elements : ");

DataInputStream din=new DataInputStream(System.in);

noe=Integer.parseInt(din.readLine());

System.out.println("Enter the elements : ");

for(int i=1;i<=noe;i++)

a[i]=Integer.parseInt(din.readLine());

System.out.println("The array:");

display();

}

catch(Exception e) { }

quick(1,noe);

}

public void swap(int i,int j)

{

int t;

t=a[i];

a[i]=a[j];

a[j]=t;

}

public void quick(int first,int last)

{

if(first<last)

{

int pivot=first;

int i=first;

int j=last;

while(i<j)

{

while(a[pivot]>=a[i] && i<last)

i++;

while(a[pivot]<=a[j] && j>first)

j--;

if(i<j)

swap(i,j);

62

CS9215 - DATASTRUCTURES LAB

}

swap(pivot,j);

quick(first,j-1);

quick(j+1,last);

}

}

public void display()

{

for(int i=1;i<=noe;i++)

System.out.println(a[i]+"\n");

}

}

class quicksort

{

public static void main(String args[])throws IOException

{

quicksortalg q1=new quicksortalg();

q1.sort();

System.out.println("The sorted array is : ");

q1.display();

}

}

63

CS9215 - DATASTRUCTURES LAB

OUTPUT :

Enter the number of elements :

8

Enter the elements :

90

32

56

89

12

76

54

34

The array:

90

32

56

89

12

76

54

34

The sorted array is :

12

32

34

54

56

76

89

90

64

CS9215 - DATASTRUCTURES LAB

RESULT :

Thus the program for quick sort has been implemented using Java and the

output is verified.

65

CS9215 - DATASTRUCTURES LAB

Ex no: 8

Date:

CONVEX HULL

AIM

To write a Java program for the implementation of convex hull ALGORITHM

Step1: Start the program

Step2: Create a class convexhullalg

Step3: Read the number of points

Step4: Get the x and y co-ordinate values

Step5: Sort the values using sort function

Step6: To sort two values swap the values of i and j

Step7: Call the function display to display the boundary points

Step8: The function check id used to check whether the point is angular or not(180▫)

Step9: End of the program

66

CS9215 - DATASTRUCTURES LAB

PROGRAM :

import java.io.*;

class convexhullalg

{

int x[],y[],n;

boolean status[];

void insert()

{

try

{

DataInputStream in=new DataInputStream(System.in);

System.out.println("Enter number of points:");

n=Integer.parseInt(in.readLine());

x=new int[n];

y=new int[n];

status=new boolean[n];

System.out.println("Enter x and y coordinates for ");

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

{

System.out.println("point "+(i+1));

x[i]=Integer.parseInt(in.readLine());

y[i]=Integer.parseInt(in.readLine());

status[i]=false;

}

}

catch(Exception e) { }

sort();

check(0,'L');

check(0,'H');

display();

}

void sort()

{

for(int i=0;i<n-1;i++)

{

for(int j=i+1;j<n;j++)

if((x[i]>x[j]) || ((x[i]==x[j]) && (y[i]>y[j])))

swap(i, j);

}

}

void swap(int i,int j)

{

int temp=x[i];

x[i]=x[j];

x[j]=temp;

67

CS9215 - DATASTRUCTURES LAB

temp=y[i];

y[i]=y[j];

y[j]=temp;

}

void display()

{

System.out.println("Boundary points are");

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

if(status[i]==true)

System.out.println("("+x[i]+", "+y[i]+")");

}

void check(int p,char c)

{

double slope=0,degree=0,deg=0;

int next=0;

status[p]=true;

for(int i=p+1;i<n;i++)

{

try

{

slope=(double)(x[i]-x[p])/(double)(y[i]-y[p]);

degree=Math.toDegrees(Math.atan(slope));

if(degree < 0)

degree+=180;

}

catch(Exception e)

{

degree=90;

}

if(i==p+1)

{

deg=degree;

next=i;

}

else

{

if((c=='L' && deg>degree)||(c!='L' && deg<degree) ||(degree==deg && x[i]<x[next]))

{

deg=degree;

next=i;

}

}

}

if(next!=0)

check(next,c);

}

}

68

CS9215 - DATASTRUCTURES LAB

class convexhull

{

public static void main(String args[])throws IOException

{

convexhullalg c=new convexhullalg();

c.insert();

}

}

69

CS9215 - DATASTRUCTURES LAB

OUTPUT :

Enter number of points:

5

Enter x and y coordinates for

point 1

1

5

point 2

2

3

point 3

5

8

point 4

3

4

point 5

6

4

Boundary points are

(1, 5)

(2, 3)

(5, 8)

(6, 4)

70

CS9215 - DATASTRUCTURES LAB

RESULT :

Thus the program for convex hull has been implemented using Java and

Executed successfully.

71

CS9215 - DATASTRUCTURES LAB

Ex no: 9

Date:

0/1 KNAPSACK USING DYNAMIC

PROGRAMMING

AIM

To write a Java program for the implementation of 0/1 knapsack using dynamic programming. ALGORITHM

Step 1: Step 2: Step 3: Step 4: Step 5: Step 6: Step 7: Step 8:

Start the program and define the function. Initialize the weight and profit. Read the number of objects that are given. For each objects, print the profit and weight Initializing is set to false. Display and print the item weight and profit Display the total cost End of the program.

72

CS9215 - DATASTRUCTURES LAB

PROGRAM :

import java.io.*;

class objects

{

int weight;

int profit;

}

public class knapsack

{

static int N,W;

static objects st[];

public static void main(String args[])throws IOException

{

DataInputStream in=new DataInputStream(System.in);

System.out.println("Enter the number of objects:");

N=Integer.parseInt(in.readLine());

System.out.println("Enter the maximum weight sack can take:");

W=Integer.parseInt(in.readLine());

st=new objects[N+1];

st[0]=new objects();st[0].weight=st[0].profit=0;

for(int i=1;i<=N;i++)

{

st[i]=new objects();

System.out.println("\nFor object "+i);

System.out.print("Enter profit: ");

st[i].profit=Integer.parseInt(in.readLine());

System.out.print("Enter Weight: ");

st[i].weight=Integer.parseInt(in.readLine());

}

int [][] opt=new int[N+1][W+1];

boolean [][] sol= new boolean[N+1][W+1];

for(int n=1;n<=N;n++)

for(int w=1;w<=W;w++)

{

int option1=opt[n-1][w];

int option2=-1;

if(st[n].weight<=w)

option2=st[n].profit+opt[n-1][w-st[n].weight];

opt[n][w]=Math.max(option1, option2);

sol[n][w]=(option2 > option1);

}

boolean take[]=new boolean[N+1];

int prof=0;

for(int n=N,w=W;n>0;n--)

if(sol[n][w])

73

CS9215 - DATASTRUCTURES LAB

{

take[n]=true;

w=w-st[n].weight;

prof+=st[n].profit;

}

else

take[n]=false;

System.out.println("\nThe optimal solution is:");

System.out.println("Item \t weight \t profit");

for(int n=1;n<=N;n++)

if(take[n])

System.out.println(n+" \t "+st[n].weight+" \t\t "+st[n].profit);

System.out.println("\n Total profit:"+prof);

}

}

74

CS9215 - DATASTRUCTURES LAB

OUTPUT :

Enter the number of objects:

4

Enter the maximum weight sack can take:

15

For object 1

Enter profit: 10

Enter Weight: 5

For object 2

Enter profit: 20

Enter Weight: 7

For object 3

Enter profit: 15

Enter Weight: 12

For object 4

Enter profit: 17

Enter Weight: 2

The optimal solution is:

Item weight profit

1 5 10

2 7 20

4 2 17

Total profit:47

75

CS9215 - DATASTRUCTURES LAB

RESULT :

Thus the program for 0/1 knapsack using dynamic program has been

implemented using Java and Executed successfully.

76

CS9215 - DATASTRUCTURES LAB

Ex no: 10

Date:

GRAPH COLORING USING

BACKTRACKING

AIM

To write the Java program for the implementation of graph Coloring using backtracking.

ALGORITHM

Step 1: Step 2: Step 3: Step 4: Step 5: Step 6: Step 7: Step 8: Step 9:

Start the program and define the function Create a class coloring Get the number of vertices in the graph Enter one if there is an edge in the graph And enter zero if there is no edge in the graph. Get the adjacency matrix of the given values Perform all possible combinations that are given Display all the combination End of the program

77

CS9215 - DATASTRUCTURES LAB

PROGRAM :

import java.io.*;

class gcoloring

{

int a[][]=new int[10][10];

int x[]=new int[10];

int m, n;

void read()

{

DataInputStream in=new DataInputStream(System.in);

try

{

System.out.println("Enter number of vertices in the graph");

n=Integer.parseInt(in.readLine());

System.out.println("Enter 1 if there is an edge Otherwise 0");

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

{

System.out.println("between "+i+" and "+j);

a[i][j]=Integer.parseInt(in.readLine());

}

}

catch(Exception e) { }

System.out.println("Given adjacency matrix is ");

for(int i=1;i<=n;i++)

{

for(int j=1;j<=n;j++)

System.out.print(a[i][j]+"\t");

System.out.println();

}

for(int i=1;i<=n;i++)

x[i]=0;

for(int i=2;i<n;i++)

{

m=i;

System.out.println("All possible combinations for m = "+i+" are ");

mcoloring(1);

}

}

void mcoloring(int k)

{

do

{

nextvalue(k);

if(x[k]==0)

break;

78

CS9215 - DATASTRUCTURES LAB

if(k==n)

{

for(int i=1;i<=n;i++)

System.out.print(x[i]+"\t");

System.out.println();

}

else

mcoloring(k+1);

}while(true);

}

void nextvalue(int k)

{

int j;

do

{

x[k]=(x[k]+1)%(m+1);

if(x[k]==0) return;

for(j=1;j<=n;j++)

{

if((a[k][j]==1) && (x[k]==x[j]))

break;

}

if(j==n+1)

return;

}while(true);

}

}

class Graphcoloring

{

public static void main(String args[ ])throws IOException

{

gcoloring g=new gcoloring();

g.read();

}

}

79

CS9215 - DATASTRUCTURES LAB

OUTPUT :

Enter number of vertices in the graph

4

Enter 1 if there is an edge Otherwise 0

between 1 and 1

0

between 1 and 2

1

between 1 and 3

0

between 1 and 4

1

between 2 and 1

1

between 2 and 2

0

between 2 and 3

1

between 2 and 4

0

between 3 and 1

0

between 3 and 2

1

between 3 and 3

0

between 3 and 4

1

between 4 and 1

1

between 4 and 2

0

between 4 and 3

1

between 4 and 4

0

Given adjacency matrix is

0 1 0 1

1 0 1 0

0 1 0 1

1 0 1 0

All possible combinations for m = 2 are

1 2 1 2

2 1 2 1

All possible combinations for m = 3 are

1 2 1 2

1 2 1 3

1 2 3 2

1 3 1 2

80

CS9215 - DATASTRUCTURES LAB

1 3 1 3

1 3 2 3

2 1 2 1

2 1 2 3

2 1 3 1

2 3 1 3

2 3 2 1

2 3 2 3

3 1 2 1

3 1 3 1

3 1 3 2

3 2 1 2

3 2 3 1

3 2 3 2

81

CS9215 - DATASTRUCTURES LAB

RESULT :

Thus the program for graph coloring using backtracking in Java has been

implemented and executed successfully.

82

CS9215 - DATASTRUCTURES LAB

top related