Sunday, October 27, 2013

Hash Table in C++

#include <iostream>
#include<string.h>
#include<stdio.h>
#define hash(x) x%10
using namespace std;
struct emp
{
    int empid;
    char name[30];
    float salary;
};
class ht
{
    emp ht[10];
    int link[10];
    public:
    void insert();
    void enter(emp x);
    void display();
    void del(int a);
    void search(int i);
};
void ht :: insert()
{
    int x;
    for(int p=0;p<10;p++){link[p] = -1;}
    for(int q=0;q<10;q++){ht[q].empid = 0;}
    for(int r=0;r<10;r++){strcpy(ht[r].name," ");}
    cout <<"\nEnter number of employees you want to enter";
    cin>>x;
    for(int i=0;i<x;i++)
    {
        emp al;
        cout<<"\n enter employee ID";
        cin>>al.empid;
        cout<<"\n enter employee name";
        cin>>al.name;
        cout<<"\n enter employee salary";
        cin>>al.salary;
        enter (al);

    }


}
void ht::enter(emp x)
{
    int y = hash(x.empid);
    if(ht[y].empid == 0)
    {
        ht[y] = x;
    }
    else
    {
        int r = y;
        while(link[r] != -1)
        {
            r = link[r];
        }
        int p = r;
        do
        {
            r=((r+1)%10);
        }
        while(ht[r].empid != 0);
        if(hash(ht[p].empid) == 0)
        {
            link[p] = r;
        }
        ht[r] = x;
    }
}
void ht ::display()
{
    cout<<"\n"<<"S.No"<<"    "<<"Emoloyee ID"<<"    "<<"Employee Name"<<"    "<<"Salary"<<"    "<<"link";
    for (int i=0;i<10;i++)
    {
        if(ht[i].empid !=0)
        {

        cout<<"\n"<<i <<"    "<<ht[i].empid<<"     "<<ht[i].name<<"     "<<ht[i].salary<<"     "<<link[i];
        }

    else
    {
        cout<<"\n--    ------    ------    ------    ------";
    }
    }



}

int main()
{
    ht h;
    char ch;
    int c;
    do
    {
        cout<<"\n What do you want to do?";
        cout<<"\n 1.Enter employee information";
        cout<<"\n 2.Enter new emplyee";
        cout<<"\n 3.Display";
        cout<<"\n Enter choice";
        cin>>c;
        switch(c)
        {
            case 1:
            h.insert();
            break;
            case 2:
            emp a;
            cout<<"\nEnter employee ID";
            cin>>a.empid;
            cout<<"\nEnter name";
            cin>>a.name;
            cout<<"\nEnter salary";
            cin>>a.salary;
            h.enter(a);
            break;
            case 3:
            h.display();
            break;
        }
        cout<<"\nDo you want to continue?(y/n) ";
        cin>>ch;


    }while(ch == 'y'||ch =='Y');
    cout << "Hello world!" << endl;
    return 0;
}

Heap Sort in Python

class heap1:
    num=0;
    arr=list();
    heap=list();
   
    def input_arr(self):
        self.arr=list();
        self.num=int(raw_input("Enter the total Numbers:"))
        self.arr.append(self.num)
        for i in xrange(self.num):
            n=int(raw_input("Num:"))
            self.arr.append(n)
        return
   
    def create(self):
        self.heap=list()
        self.heap=self.arr[:]
        self.heap[0]=0
        for i in xrange(1,self.num+1,1):
            self.insert(self.arr[i])
        return
   
    def insert(self,i):
        n=self.heap[0]
        self.heap[n:n]=[self.heap[n],i]
        n=n+1
        self.heap[0]=n
        self.upadjust(n)
        return
   
    def upadjust(self,i):
        while (self.heap[i]>self.heap[i/2] and i>1):
            temp=self.heap[i]
            self.heap[i]=self.heap[i/2]
            self.heap[i/2]=temp
            i=i/2
        return
   
    def downadjust(self,i):
        flag=1
        while((2*i<=self.num) and flag==1):
            j=2*i
            if((j+1<=self.num) and (self.heap[j+1]>self.heap[j])):
                j=j+1
            if(self.heap[i]>self.heap[j]):
                flag=0
            else:
                temp=self.heap[j]
                self.heap[j]=self.heap[i]
                self.heap[i]=temp
                i=j
        return
   
    def delete(self):
        x=self.heap[1]
        n=self.heap[0]
        self.heap[1]=self.heap[n]
        n=n-1
        self.heap[0]=n
        self.downadjust(1)
        return x
   
    def display(self):
        n=self.heap[0]
        for i in xrange(1,n+1,1):
            print self.heap[i]
        return
   
obj=heap1()
a=1
while a==1:
    print "1.Input an Array"
    print "2.Insert an element"
    print "3.Create Heap from array"
    print "4.Delete the Maximum Element"
    print "5.Display"
    print "6.Exit"
    b=int(raw_input("Enter an Option:"))
    if(b==1):
        obj.input_arr()
    elif(b==2):
        i=int(raw_input("Enter the Element:"))
        obj.insert(i)
    elif(b==3):
        obj.create()
        obj.display()
    elif(b==4):
        j=obj.delete()
        print "Tne Maximum element deleted is "+str(j)
        obj.display()
    elif(b==5):
        obj.display()
    elif(b==6):
        a=0

Dijkstra's/Shortest Path Algorithm in C

#include<stdio.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#define sz 20
void create(int A[sz][sz],int v);
void dijkstra(int cost[sz][sz],int v,int st);
void main()
 {
  int ch,v,st,i,j;
  int A[sz][sz];
  do
{
clrscr();
printf("\n\t$----------GRAPH------------$");
printf("\n\t|      1. CREATE            |");
printf("\n\t|      2. SHORTEST PATH     |");
printf("\n\t|      3. EXIT              |");
printf("\n\t$---------------------------$");
printf("\n\tEnter Choice : ");
scanf("%d",&ch);
switch(ch)
  {
  case 1:
 printf("\nEnter No. of Vertices : ");
 scanf("%d",&v);
 create(A,v);
 for(i=0;i<v;i++)
{
printf("\n");
for(j=0;j<v;j++)
  printf(" %d ",A[i][j]);
}
 break;
  case 2:
 printf("\n\tEnter starting starting vertex : ");
 scanf("%d",&st);
 dijkstra(A,v,st);
 break;
  case 3:
 exit(0);
 break;

  }
  getch();
}while(ch!=3);
 }
void dijkstra(int cost[sz][sz],int v,int st)
  {
   int i,j,totv,visited[sz],dist[sz],pred[sz],u,min;
   for(i=0;i<v;i++)
{
visited[i]=0;
dist[i]=32767;
pred[i]=0;
}
   totv=1;
   visited[st]=1;
   for(i=0;i<v;i++)
{
 if(cost[st][i]!=32767&&visited[i]==0)
{
  dist[i]=cost[st][i];
  pred[i]=st;
}
}

   while(totv<v)
{
 min=32767;
 for(i=0;i<v;i++)
{
if(dist[i]<min&&visited[i]==0)
  {
min=dist[i];
u=i;
  }
}
 totv++;
 visited[u]=1;
 for(i=0;i<v;i++)
{
if(visited[i]==0&&cost[u][i]!=32767)
  {
if(dist[i]>(cost[u][i]+dist[u]))
{
  dist[i]=cost[u][i]+dist[u];
  pred[i]=u;
}

  }

}


}

for(i=0;i<v;i++)
 {
  if(i!=st&&dist[i]!=32767)
{
  printf("\n DIST of (%d->%d) : %d  ",st,i,dist[i]);
  printf("PATH : ");
  j=i;
  do
{
if(j==pred[j])
  break;
printf(" %d <-",j);
j=pred[j];

}while(j!=st);
  if(j!=pred[j])
printf(" %d",st);
}

 }



  }
void create (int A[sz][sz],int v)
  {
   int i,j,x,y;
   for(i=0;i<v;i++)
for(j=0;j<v;j++)
  A[i][j]=32767;

   for(i=0;i<v;i++)
{
 printf("\nEnter An EDGE (x->y) : ");
 scanf("%d",&x);
 if(x==-1)
break;
 scanf("%d",&y);
 if(x==-1)
break;
  printf("\nEnter Weight : ");
  scanf("%d",&j);
 A[x][y]=j;

}

  }

Topological Sorting in Java

import java.util.Scanner;


public class Topological {
int vertices,edges;
int graph[][],indegree[],visited[];



public Topological() {
Scanner sc=new Scanner(System.in);
System.out.println("Enter total no of vertices : ");
vertices=sc.nextInt();
graph=new int [vertices][vertices];
indegree=new int [vertices];
visited=new int [vertices];

for(int i=0;i<vertices;i++){ //Initialization of graph
for(int j=0;j<vertices;j++){
graph[i][j]=0;
}
indegree[i]=0;
visited[i]=0;
}
}

void create(){
System.out.println("Enter total no of Edges : ");
Scanner sc=new Scanner(System.in);
edges=sc.nextInt();

System.out.println("Enter source and destination vertex ");

for(int i=0;i<edges;i++){
System.out.println(++i+".");
--i;
System.out.println("Source vertex : ");
int u=sc.nextInt();
System.out.println("Destination vertex : ");
int v=sc.nextInt();
graph[u][v]=1;
}
}


int cal_indegree(int ver){
int count=0;
for(int i=0;i<vertices;i++){
if(graph[i][ver]==1)
count++;
}
return count;
}

void topological_sorting(){
int j;
for(int i=0;i<vertices;i++){
indegree[i]=cal_indegree(i);
}

System.out.println("Result of Topological sorting is : ");
for(int i=0;i<vertices;i++){
j=0;
while(j<vertices){
if(visited[j]==0 && indegree[j]==0){
visited[j]=1;
System.out.print(j+" ");
for(int k=0;k<vertices;k++){
if(graph[j][k]!=0)
indegree[k]--;
}
break;
}
j++;
}
if(j==vertices){
System.out.println("Graph has a cycle");
break;
}

}
}


public static void main(String[] args) {
Topological topo=new Topological();
topo.create();
topo.topological_sorting();

}

}

Threaded Binary Tree in C++


#include<iostream>
#include<stdlib.h>

using namespace std;
class node
{
public:
int data;
node *lchild;
node *rchild;
int lbit;
int rbit;
};

class TBT
{
private:
node *root,*dummy;
public:
TBT()
{
root=NULL;
dummy=NULL;
}
void create(int num);
void display();
void insert(node *, node *);
};

void TBT::create(int num)
{
node *temp,*trav;
temp=new node;
temp->data=num;
temp->lbit=0;
temp->rbit=0;
if(root==NULL)
{
dummy=new node;
dummy->data=-9999;
dummy->lbit=1;
dummy->rbit=1;
dummy->rchild=dummy;
dummy->lchild=temp;
temp->lchild=dummy;
temp->rchild=dummy;
root=temp;
}
else
{
trav=root;
insert(trav,temp);
}
}

void TBT::insert(node *trav, node *temp)
{
if(temp->data<trav->data)
{
if(trav->lbit==0)
{
temp->lchild=trav->lchild;
temp->rchild=trav;
trav->lchild=temp;
trav->lbit=1;
}
else
insert(trav->lchild,temp);

}
if(temp->data>trav->data)
{
if(trav->rbit==0)
{
temp->rchild=trav->rchild;
temp->lchild=trav;
trav->rchild=temp;
trav->rbit=1;
}
else
insert(trav->rchild,temp);
}
}

void TBT::display()
{
void inorder(node *trav,node *dummy);
void preorder(node *trav,node *dummy);
void postorder(node *trav,node *dummy);

int ch;
node *trav, *trav2, *trav3;
if(root==NULL)
{
cout<<"TBT is not yet created:";
return;
}
else
{
do
{
cout<<"\n\n Enter ur choice";
cout<<"\n 1.Inorder Traversal";
cout<<"\n 2.Preorder Traversal";
cout<<"\n 3.Postorder Traversal";
cout<<"\n 4.Exit";
cin>>ch;
switch(ch)
{
case 1: cout<<"  ";
trav=root;
inorder(trav,dummy);
break;
case 2: cout<<"  ";
node *trav2;
trav2=root;
preorder(trav2,dummy);
break;
case 3: cout<<"  ";
node *trav3;
trav3=root;
postorder(trav3,dummy);
break;
case 4: exit(0);
default:cout<<"\n Wrong choice";
break;
}
}while(ch!=4);
      }
}


void preorder(node *trav,node *dummy)
{
cout<<endl;
if(trav==NULL)
{
cout<<"\n TBT Tree is empty";
}
else
{
while(trav!=dummy)
{
cout<<"\n"<<trav->data;

if(trav->lbit==1)
{
trav=trav->lchild;
}
else
{
while(trav->rbit==0 && trav->rchild!=dummy)
{
trav=trav->rchild;
}
trav=trav->rchild;
}
}}

}

void inorder(node *trav,node *dummy)
{
cout<<endl;
if(trav==NULL)
{
cout<<"\n TBT tree is empty";
}
else
{
while(trav!=dummy)
{
while(trav->lbit==1)
{
      trav=trav->lchild;
}
cout<<"\n"<<trav->data;
while(trav!=dummy)
{
if(trav->rbit==1)
{
trav=trav->rchild;
while(trav->lbit==1)
{
trav=trav->lchild;
}
cout<<trav->data<<endl;
}
else
{
while(trav->rbit==0)
{
trav=trav->rchild;
if(trav==dummy)
{
break;
}
cout<<trav->data<<endl;
}
}
}

}}

}

void postorder(node *trav,node *dummy)
{
   int i=0,a[20],n;
   if(trav==NULL)
   {
cout<<"\n TBT Tree is Empty.";
   }
   else
   {
while(trav!=dummy)
{
  a[i]=trav->data;
  i++;
  if(trav->rbit==1)
  {
trav=trav->rchild;
  }
  else
  {
     while(trav->lbit==0 && trav->lchild!=dummy)
     {
 trav=trav->lchild;
     }
     trav=trav->lchild;
  }
}
   }
   n=i;
   n--;

   for(i=n;i>=0;i--)
   {
cout<<"\n"<<a[i];
   }
}



int main()
{
TBT t;
int ch,num,i,temp;
do
{
cout<<endl<<"1. Create TBT";
cout<<endl<<"2. Display";
cout<<endl<<"3. Exit";
cout<<endl<<"Enter ur choice";
cin>>ch;
switch(ch)
{
case 1: cout<<endl<<"Enter number of nodes u want to insert";
cin>>num;
for(i=0;i<num;i++)
{
cout<<endl<<"Enter the data";
cin>>temp;
t.create(temp);
}
break;
case 2: t.display();
break;
case 3: exit(0);
default: cout<<endl<<"Wrong choice";
}
}while(ch!=3);
return 0;
}

Queue implementation in Java Applet Frame

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class que_2 extends JFrame implements ActionListener {
JTextField t1;
String abc="";
JButton b1,b2,b3;
JLabel l1,l3;
int arr[]=new int[50];
int str=0;
int end=0;
que_2()
{
     setTitle("Queue");
     setLayout(new FlowLayout());
     t1=new JTextField(10);
     add(t1);
b1=new JButton("Insert");
add(b1);
b1.addActionListener(this);


b2=new JButton("Remove"); 
add(b2);
b2.addActionListener(this);
b3=new JButton("Exit");   
add(b3);
b3.addActionListener(this);
l1=new JLabel("Message");
//l2=new JLabel("Stack is");
l3=new JLabel();
add(l1);
//add(l2);
add(l3);
//add(l);
}
public static void main(String args[])
{
que_2 f=new que_2();
f.setSize(500, 500);
f.setVisible(true);

 }
public void actionPerformed(ActionEvent ae)
{//int i=9,j=0;
String strn="";
strn=ae.getActionCommand();
if(strn=="Insert")
{
     //l2=new JLabel("");
           //int x;
           if(end!=49)
           {         
           arr[end]=Integer.parseInt(t1.getText());
           t1.setText(null);
           end++;
           }
                else
                {l1.setText("operation can not be performed");}
           for(int i=str;i<end;i++)
           {
                abc=abc+" "+arr[i];
           }
           l3.setText(abc);
           //i--;
           abc="";
}
if(strn=="Remove")
{
     //l2.setText("0");
     if(str!=end)
     {
           str++;
           int x=arr[str];

     //cout<<x<<endl;
}

     else
     {
          
           l1.setText("operation can not be performed");
     }
     for(int i=str;i<end;i++)
     {
           abc=abc+" "+arr[i];
     }
     l3.setText(abc);
     //i--;
     abc="";
}
else if(strn=="Exit")
{
      System.exit(0);    
}
}
}




Perform a suitable assignment using Xen Hypervisor or equivalent open source to configure it. Give necessary GUI.

 To install kvm on Fedora:  yum install kvm  yum install virt-manager libvirt libvirt-python python-virtinst  su -c "yum install @v...