Successfully reported this slideshow.
Upcoming SlideShare
×

# Data structures lab

596 views

Published on

CSC

Published in: Education
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

### Data structures lab

1. 1. Ex No: 1 MIN HEAPDate:AIM To implement the min heap structure with insert and delete minimum operation usingJava programALGORITHM Step 1: start the program by creating function with min heap property Step 2: two functions namely insert() and deletemin() are created Step 3: The insert () is used to insert new element in the tree structure with heap property. Step 4: The deletemin() is used to delete the minimum element which is usually a root node. Step 5: The two operations are performed satisfying heapness and completeness property. Step 6: End of the program. 1
2. 2. PROGRAM: MIN HEAPimport 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 { 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; 2
3. 3. } public void delete() } { 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}{ public static void main(String args[]) throws IOException { int ch=0,cont=0; heapalg h1=new heapalg(); do { System.out.println("MIN HEAP 1.Insert 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.delete(); h1.display(); } else { System.out.println("Enter the correct choice"); } System.out.println("press 1 to continue:"); try { cont=Integer.parseInt(din.readLine()); 3
4. 4. } catch(Exception e){} }while(cont==1); }} 4
5. 5. OUTPUT:--------MIN HEAP 1.Insert 2.Delete Min1Enter the element:42The heap elements are:42press 1 to continue:1MIN HEAP 1.Insert 2.Delete Min1Enter the element:3The heap elements are:342press 1 to continue:1MIN HEAP 1.Insert 2.Delete Min1Enter the element:86The heap elements are:34286press 1 to continue:1MIN HEAP 1.Insert 2.Delete Min1Enter the element:2The heap elements are:238642press 1 to continue:1MIN HEAP 1.Insert 2.Delete Min2The deleted min elt:2The heap elements are:34286press 1 to continue:12. 5
6. 6. Ex No: 2 DEAPSDate:AIM To implement program for deaps structure with insert and delete operations usingJava.ALGORITHM Step 1: Start the program by creating Deap Structure. Step 2: Perform insert and delete functions. Step 3: The insert() is done with 2 methods namely maxinsert() and mininsert(). Step 4: The delete() is done with 2 methods namely deletemax() and deletemin() Step 5: The leftChild and rightChild are compared and the appropriate element is placed in the root node. Step 6: After the insert and delete operation Deap elements are displayed. Step 7: Stop of the program. 6
7. 7. PROGRAMDEAPSimport 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) { 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); 7
8. 8. 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()}{ 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: 8 partner=MaxPartner(p);
9. 9. if(h[partner]<h[p]) { swap(p,partner); MaxInsert(partner); } else MinInsert(p); break; default: System.out.println("ERROR"); } }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; t 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; default: 9
10. 10. 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]) { swap(i,partner); MaxInsert(partner); } else MinInsert(i); break; default: System.out.println("ERROR"); } } } }public class deaps}{ 10
11. 11. public static void main(String args[]) throws IOException { int ch=0,cont=0; deapsalg h1=new deapsalg(); do { System.out.println("DEAPs 1.Insert 2.Delete Min 3.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"); } System.out.println("press 1 to continue:"); try { cont=Integer.parseInt(din.readLine()); } catch(Exception e){} }while(cont==1); }} 11
12. 12. OUTPUT:--------DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:20The deaps elements are:020press 1 to continue:1DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:5The deaps elements are:0520press 1 to continue:1DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:3The deaps elements are:03205press 1 to continue:1DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:7The deaps elements are:032057press 1 to continue:1DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:11The deaps elements are:03205711press 1 to continue:1 12
13. 13. DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:55The deaps elements are:0355571120press 1 to continue:1DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:77The deaps elements are:037757552011press 1 to continue:1DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:88The deaps elements are:03885777201155press 1 to continue:1DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:17The deaps elements are:03885777201155 13
14. 14. 17press 1 to continue:1DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:1The deaps elements are:01885377201155177press 1 to continue:1DEAPs 1.Insert 2.Delete Min 3.Delete Max1Enter the element:100The deaps elements are:01100538820115517777press 1 to continue:1DEAPs 1.Insert 2.Delete Min 3.Delete Max2The deleted min elt:1The deaps elements are:0310057887711551720press 1 to continue: 14
15. 15. RESULTThus the program for Deaps using Java has been implemented. 15
16. 16. Ex.No:3 LEFTIST HEAPDate:AIM To implement the leftist heap with insert and deletemin operation using Java.ALGORITHM Step 1: Start the program by defining function. Step 2: We know heap as the root node with minimum element. Step 3: The insert and delete operations are performed with the help of combining 2 trees. Step 4: The insert operation is performed by combining the two leftist trees. Step 5: The deletemin() is used to delete the minimum element in the heap. Step 6: After the insert and delete operations leftist heap elements are displayed. Step 7: Stop the program. 16
17. 17. PROGRAMLEFTIST HEAPimport 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)) { 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() { 17
18. 18. 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 { System.out.println("LEFTIST TREE 1. Insert 2. 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){} 18
19. 19. }while(cont==1); }OUTPUT:}-------LEFTIST TREE 1. Insert 2. Delete1Enter the element:50In Order50 SHORTEST 1press 1 to continue:1LEFTIST TREE 1. Insert 2. Delete1Enter the element:8In Order50 SHORTEST 18 SHORTEST 1press 1 to continue:1LEFTIST TREE 1. Insert 2. Delete1Enter the element:13In Order50 SHORTEST 18 SHORTEST 213 SHORTEST 1press 1 to continue:1LEFTIST TREE 1. Insert 2. Delete1Enter the element:11In Order50 SHORTEST 18 SHORTEST 213 SHORTEST 111 SHORTEST 1press 1 to continue:1LEFTIST TREE 1. Insert 2. Delete1Enter the element:20In Order13 SHORTEST 111 SHORTEST 220 SHORTEST 18 SHORTEST 250 SHORTEST 1press 1 to continue:1LEFTIST TREE 1. Insert 2. Delete1Enter the element: 19
20. 20. 18In Order13 SHORTEST 111 SHORTEST 220 SHORTEST 18 SHORTEST 250 SHORTEST 118 SHORTEST 1press 1 to continue:1LEFTIST TREE 1. Insert 2. Delete1Enter the element:2In Order13 SHORTEST 111 SHORTEST 220 SHORTEST 18 SHORTEST 250 SHORTEST 118 SHORTEST 12 SHORTEST 1press 1 to continue:1LEFTIST TREE 1. Insert 2. Delete1Enter the element:7In Order13 SHORTEST 111 SHORTEST 220 SHORTEST 18 SHORTEST 250 SHORTEST 118 SHORTEST 12 SHORTEST 27 SHORTEST 1press 1 to continue:1LEFTIST TREE 1. Insert 2. Delete2Deleted element is 2In Order13 SHORTEST 111 SHORTEST 220 SHORTEST 18 SHORTEST 250 SHORTEST 118 SHORTEST 1 20
21. 21. RESULTThus the program for leftist heap using Java has been implemented. 21
22. 22. Ex no: 4 AVL TREEDate:AIM To implement the AVL tree with insert & delete operations using Java.ALGORITHM Step 1: Start the program by defining the functions. Step 2: Insert the elements to the AVL tree. Step 3: Check the tree if it is balanced or not. Step 4: The balance factor is one of 0, 1 and -1. Step 5: If it is not balanced, balance the tree using (i) Left-left (ii) Left-right (iii) Right-left (iv) Right-right Balancing Step 6: And if the tree is balanced and then the insert() and the delete() operations are performed. Step 7: Stop the program. 22
23. 23. PROGRAMAVL TREEimport 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;} 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 23
24. 24. 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;} } 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) { System.out.println("RR imbalance"); 24
25. 25. 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) 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); 25
26. 26. } }class AVLTreeImp};{ public static void main(String args[ ])throws IOException { int ch=0,cont=0; avltree a = new avltree(); do { System.out.println("AVLTREES 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:"); try { cont=Integer.parseInt(din.readLine()); } catch(Exception e){} }while(cont==1); }} 26
27. 27. OUTPUT:-------AVLTREES 1. Insert1Enter the element:3In Order3 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:2In Order2 BF 03 BF 1press 1 to continue:1AVLTREES 1. Insert1Enter the element:1LL imbalanceIn Order1 BF 02 BF 03 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:4In Order1 BF 02 BF -13 BF -14 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:5RR imbalanceIn Order1 BF 02 BF -13 BF 04 BF 05 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:6RR imbalance 27
28. 28. In Order1 BF 02 BF 03 BF 04 BF 05 BF -16 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:7RR imbalanceIn Order1 BF 02 BF 03 BF 04 BF 05 BF 06 BF 07 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:16In Order1 BF 02 BF 03 BF 04 BF -15 BF 06 BF -17 BF -116 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:15RL imbalanceIn Order1 BF 02 BF 03 BF 04 BF -15 BF 06 BF -17 BF 015 BF 016 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:14 28
29. 29. RL imbalanceIn Order1 BF 02 BF 03 BF 04 BF -15 BF 06 BF 17 BF 014 BF 015 BF 016 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:13RR imbalanceIn Order1 BF 02 BF 03 BF 04 BF 05 BF 06 BF 17 BF 013 BF 014 BF 115 BF 116 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:12LL imbalanceIn Order1 BF 02 BF 03 BF 04 BF 05 BF 06 BF 17 BF 012 BF 013 BF 014 BF 015 BF 116 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:11 29
30. 30. LL imbalanceIn Order1 BF 02 BF 03 BF 04 BF 05 BF 06 BF 17 BF 011 BF 012 BF 113 BF 014 BF 015 BF 016 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:10LL imbalanceIn Order1 BF 02 BF 03 BF 04 BF 05 BF 06 BF 17 BF 010 BF 011 BF 012 BF 013 BF 014 BF 015 BF 016 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:8In Order1 BF 02 BF 03 BF 04 BF 05 BF 06 BF 17 BF-18 BF 010 BF111 BF112 BF0 30
31. 31. 13 BF 114 BF 015 BF 016 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:9LR imbalanceIn Order1 BF 02 BF 03 BF 04 BF 05 BF 06 BF 17 BF -18 BF 09 BF 010 BF 011 BF 112 BF 013 BF 114 BF 015 BF 016 BF 0press 1 to continue:1AVLTREES 1. Insert1Enter the element:16In Order1 BF 02 BF 03 BF 04 BF 05 BF 06 BF 17 BF -18 BF 09 BF 010 BF 011 BF 112 BF 013 BF 114 BF 015 BF 016 BF 0Data already existspress 1 to continue:12 31
32. 32. RESULTThus the program for AVL tree using Java has been implemented 32
33. 33. Ex.No:5 B-TREEDate:AIM To implement the b-tree with insert and delete operations using Java.ALGORITHM Step 1: Start the program by defining function. Step 2: Declare the class btree Step 3: The insert and delete operations are performed Step 4: To insert, check if root is empty, if it is empty insert the element as root. Step 5: If it is greater insert it into right sub tree. Step 6: Otherwise, insert it into left sub tree Step 7: Use the function split, to split the nodes Step 8: Call the function display to display data1,data2,address and parent Step 9: End of the program 33
34. 34. PROGRAMB-TREEimport 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) { 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 34
35. 35. { 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(); 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; 35
36. 36. 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) 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 { 36
37. 37. 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); }} 37
40. 40. Ex no: 6 TRIESDate:AIM To implement the tries with insert & delete operations using Java.ALGORITHM Step 1: Start the program by defining the functions. Step 2: First initialize the node to null Step 3: to find the particular element use function find check the element to root node, if it is not found check for left or right side of the root. If its found return the element Step 4: to insert the particular element read that elemnt and insert the element with tag as 0 and level as 1. Step 5: to display the elements ,display if root as null, print as empty, otherwise call empty Step 6: print the current node in left sub tre in the format as currentnode.data + level and tag. Step 7: display current node in the right sub tree Step 8: end of the program 40
41. 41. PROGRAMTRIESimport java.io.*;class node{ public int tag,level; starts with 1 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; } 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(); 41
42. 42. 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) { 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; 42
43. 43. temp.RC=n1; n1.level=n2.level=temp.level+1; n1.par=temp; } } else n2.par=temp; { 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"); else } public void display() } { if(root==null) System.out.println("EMPTY"); else { System.out.println("nIn Order"); dispin(root); } } public void dispin(node currentnode) { "+currentnode.level+" if(currentnode!=null) { dispin(currentnode.LC); System.out.println(currentnode.data+" "+"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("TRIES 1. Insert "); DataInputStream din = new DataInputStream(System.in); try { ch=Integer.parseInt(din.readLine()); 43 }
44. 44. 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 { cont=Integer.parseInt(din.readLine()); } catch(Exception e){} }while(cont==1); }} 44
45. 45. OUTPUT:-------TRIES 1. Insert1Enter the element:1232In Order1232 LEVEL- 1TAG-0press 1 to continue:1TRIES 1. Insert1Enter the element:4451In Order1232 LEVEL- 2TAG-00 LEVEL- 1 TAG-14451 LEVEL- 2TAG-0press 1 to continue:1TRIES 1. Insert1Enter the element:1243In Order1232 LEVEL- 2TAG-00 LEVEL- 1 TAG-10 LEVEL- 2 TAG-14451 LEVEL- 5TAG-00 LEVEL- 4 TAG-11243 LEVEL- 5TAG-00 LEVEL- 3 TAG-1press 1 to continue:1TRIES 1. Insert1Enter the element:1015In Order1232 LEVEL- 2TAG-00 LEVEL- 1 TAG-10 LEVEL- 2 TAG-14451 LEVEL- 5TAG-00 LEVEL- 4 TAG-11243 LEVEL- 5TAG-00 LEVEL- 3 TAG-11015In Order LEVEL- 4TAG-0 LEVEL- 31232press 1TAG-0 to continue:10 LEVEL- 2 TAG-1TRIES 1. Insert1Enter the element: 451942
46. 46. 1942 LEVEL- 3TAG-00 LEVEL- 1 TAG-10 LEVEL- 2 TAG-14451 LEVEL- 5TAG-00 LEVEL- 4 TAG-11243 LEVEL- 5TAG-00 LEVEL- 3 TAG-11015 LEVEL- 4TAG-0press 1 to continue:1TRIES 1. Insert1Enter the element:1941In Order1232 LEVEL- 3TAG-00 LEVEL- 2 TAG-11942 LEVEL- 3TAG-00 LEVEL- 1 TAG-11941 LEVEL- 3TAG-00 LEVEL- 2 TAG-14451 LEVEL- 5TAG-00 LEVEL- 4 TAG-11243 LEVEL- 5TAG-00 LEVEL- 3 TAG-11015 LEVEL- 4TAG-0press 1 to continue:1TRIES 1. Insert1Enter the element:1055In Order1232 LEVEL- 3TAG-00 LEVEL- 2 TAG-11942 LEVEL- 3TAG-00 LEVEL- 1 TAG-11941 LEVEL- 3TAG-00 LEVEL- 2 TAG-14451 LEVEL- 5TAG-00 LEVEL- 4 TAG-11243 LEVEL- 5TAG-00 LEVEL- 3 TAG-11015 LEVEL- 5TAG-00 LEVEL- 4 TAG-11055 LEVEL- 5TAG-0press 1 to continue:1TRIES 1. Insert1Enter the element:1243Element already exists 46In Order1232 LEVEL- 3
47. 47. 0 LEVEL- 2 TAG-14451 LEVEL- 5TAG-00 LEVEL- 4 TAG-11243 LEVEL- 5TAG-00 LEVEL- 3 TAG-11015 LEVEL- 5TAG-00 LEVEL- 4 TAG-11055 LEVEL- 5TAG-0press 1 to continue:12RESULTThus the program for tries using Java has been implemented 47
48. 48. Ex No: 7 Quick SortDate:AIM To write a Java program for the implementation the quick sortALGORITHM 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. 48
49. 49. PROGRAMQuick Sortimport 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); } swap(pivot,j); quick(first,j-1); quick(j+1,last); } } public void display() { for(int i=1;i<=noe;i++) 49
50. 50. 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:"); q1.display(); } 50
51. 51. OUTPUTEnter the number of elements:5Enter the elements:29614563The array:29614563The sorted array:12456396RESULT: Thus the program for quick sort has been implemented using Java and the output isverified. 51
52. 52. Ex No: 8 CONVEX HULLDate:AIM To write a Java program for the implementation of convex hullALGORITHM 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 52
53. 53. PROGRAMCONVEX HULLimport 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; 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]+")"); } 53
54. 54. 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); }class convexhull}{ public static void main(String arg[]) throws IOException { convexhullalg c=new convexhullalg(); c.insert(); } 54
55. 55. OUTPUT:--------Enter number of points:4Enter x and y coordinates forpoint 126point 278point 314point 4210Boundary points are(1, 4)(2, 10)(7, 8)RESULT: Thus the program for convex hull has been implemented using Java and theoutput is verified. 55
56. 56. Ex No: 9 0/1 KNAPSACK USING DYNAMIC PROGRAMMINGDate:AIM To write a Java program for the implementation of 0/1 knapsack using dynamicprogramming.ALGORITHM Step 1: Start the program and define the function. Step 2: Initialize the weight and profit. Step 3: Read the number of objects that are given. Step 4: For each objects, print the profit and weight Step 5: Initializing is set to false. Step 6: Display and print the item weight and profit Step 7: Display the total cost Step 8: End of the program. 56
57. 57. PROGRAM0/1 KNAPSACK USING DYNAMIC PROGRAMMINGimport 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]) { 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+" tt "+st[n].profit); System.out.println("n Total profit:"+prof); }} 57
58. 58. OUTPUT:------Enter the number of objects:3Enter the maximum weight sack can take:10For object 1Enter profit: 20Enter Weight: 6For object 2Enter profit: 10Enter Weight: 2For object 3Enter profit: 19Enter Weight: 3The optimal solution is:Item weight profit1 6 203 3 19Total profit:39RESULT Thus the program for 0/1 knapsack using Java has been implemented. 58
59. 59. Ex No: 10 GRAPH COLORING USING BACKTRACKINGDate:AIM To write the Java program for the implementation of graph coloringALGORITHM Step 1: Start the program and define the function Step 2: Create a class coloring Step 3: Get the number of vertices in the graph Step 4: Enter one if there is an edge in the graph Step 5: And enter zero if there is no edge in the graph. Step 6: Get the adjacency matrix of the given values Step 7: Perform all possible combinations that are given Step 8: Display all the combination Step 9: End of the program 59
60. 60. PROGRAMGRAPH COLORING USING BACKTRACKINGimport 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; 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) { 60
61. 61. 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(); }} 61
62. 62. OUTPUT:-------Enter number of vertices in the graph4Enter 1 if there is an edge Otherwise 0between 1 and 10between 1 and 21between 1 and 30between 1 and 41between 2 and 11between 2 and 20between 2 and 31between 2 and 40between 3 and 10between 3 and 21between 3 and 30between 3 and 41between 4 and 11between 4 and 20between 4 and 31between 4 and 40Given adjacency matrix is0 1 0 11 0 1 00 1 0 11 0 1 0All possible combinations for m = 2 are1 2 1 22 1 2 1All possible combinations for m = 3 are1 2 1 21 2 1 31 2 3 21 3 1 21 3 1 31 3 2 32 1 2 12 1 2 32 1 3 12 3 1 32 3 2 1 62
63. 63. 2 3 2 33 1 2 13 1 3 13 1 3 23 2 1 23 2 3 13 2 3 2RESULTThus the program for graph coloring using Java has been implemented. 63