SlideShare a Scribd company logo
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 1)
/* Implementation of STACK ADT using arrays */
#include<iostream.h>
#include<conio.h>
template <class t>
class stack
{
t s[20];
int top,size;
public:
stack (int);
void push(t);
t pop();
void display();
};
template <class t>
stack <t> :: stack(int n)
{
top=-1;
size=n;
}
template <class t>
void stack<t> :: push(t item)
{
if(top>=size-1)
cout<<"stack is full";
else
s[++top]=item;
}
template <class t>
t stack <t> :: pop()
{
if(top==-1)
{
cout<<"n stack is emptyn";
return 0;
}
else
return (s[top--]);
}
template <class t>
void stack <t> :: display()
{
if(top==-1)
cout<<"n stack is emptyn";
else
{
cout<<"n the stack elements aren";
for(int i=top;i>=0;i--)
cout<<s[i]<<endl;
}
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 1
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
}
void main()
{
stack <int> s1(20);
stack <char> s2(20);
int ch,ch1;
int iitem,piitem;
char citem,pcitem;
clrscr();
do
{
cout<<"nn 1.pushn 2.pop n 3.exitn";
cout<<"n Enter ur choice:";
cin>>ch;
switch(ch)
{
case 1:
cout<<"n 1.Integer n 2.Character n";
cin>>ch1;
if(ch1==1)
{
cout<<"n Enter the element:";
cin>>iitem;
s1.push(iitem);
s1.display();
}
else
{
cout<<"n Enter the character :";
cin>>citem;
s2.push(citem);
s2.display();
}
break;
case 2:
cout<<"n 1.Integer n 2.Character n";
cout<<"Enter ur choice :";
cin>>ch1;
if(ch1==1)
{
piitem=s1.pop();
cout<<"n The popped element is n";
cout<<piitem;
s1.display();
}
else
{
pcitem=s2.pop();
cout<<"n The popped element is n";
cout<<pcitem;
s2.display();
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 2
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
} break;
}
}while(ch<=2);
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 3
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 2)
/* Implementation of QUEUE ADT using arrays */
#include <iostream.h>
#include <conio.h>
template <class t>
class queue
{
t q[10];
int front,rear,size;
public:
queue(int);
void insert(t);
t del();
void display();
};
template <class t>
queue <t>:: queue(int n)
{
rear=-1;
front=-1;
size=n;
}
template <class t>
void queue <t> :: insert(t item)
{
if(rear==size-1)
cout<<"n Queue is full n";
else
{
q[++rear]=item;
if(front==-1)
front=0;
}
}
template <class t>
t queue <t> :: del()
{
if(front==-1)
{
cout<<"n queue is empty n";
return 0;
}
else
{
if(front==rear)
{
int temp=q[front];
front=-1;
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 4
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
rear=-1;
return temp;
}
else
return (q[front++]);
}
}
template <class t>
void queue <t> :: display()
{
if(front==-1)
cout<<"n queue is emptyn";
else
{
cout<<"n the queue elements are :n";
for( int i=front;i<=rear;i++)
cout<<q[i]<<endl;
}
}
void main()
{
queue <int> q1(20);
queue <char> q2(20);
int ch,ch1,iitem,ditem;
char citem,dcitem;
clrscr();
do
{
cout<<"n 1.Insertionn 2.Deletion n 3.Exitn";
cout<<"n Enter your choice:";
cin>>ch;
switch(ch)
{
case 1:
cout<<"n 1.Integer n 2.Character n";
cout<<"n Enter ur choice :";
cin>>ch1;
if(ch1==1)
{
cout<<"n Enter the element :";
cin>>iitem;
q1.insert(iitem);
q1.display();
}
else
{
cout<<"n Enter the element :";
cin>>citem;
q2.insert(citem);
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 5
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
q2.display();
}
break;
case 2:
cout<<"n 1. Integer 2. Character n";
cout<<"n Enter your choice:";
cin>>ch1;
if(ch1==1)
{
ditem=q1.del();
cout<<"n The deleted integer item is :"<<ditem;
q1.display();
}
else
{
dcitem=q2.del();
cout<<"n The deleted character item is :"<<dcitem;
q2.display();
}
break;
}
}while(ch<=2);
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 6
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 3)
/* Implementation STACK ADT using singly linked list */
#include <iostream.h>
#include <conio.h>
template <class t>
class stack
{
protected:
struct node
{
t data;
node *link;
};
node *top;
public:
void push(t);
void pop();
void display();
stack()
{
top=NULL;
}
};
template <class t>
void stack <t> :: push(t item)
{
node *first=new node[1];
first->data=item;
first->link=top;
top=first;
}
template <class t>
void stack <t> :: pop()
{
if(top==NULL)
cout<<"n stack is empty n";
else
{
cout<<"n the popped elemtn is :"<<top->data;
top=top->link;
}
}
template <class t>
void stack <t> :: display()
{
if(top==NULL)
cout<<"stack is empty";
else
{
node *list=top;
cout<<"n The elements in the stack are n";
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 7
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
while(list->link!=NULL)
{
cout<<list->data<<endl;
list=list->link;
}
cout<<list->data;
} }
void main()
{
stack <int> s1;
stack <char> s2;
int ch,ch1,iitem;
char citem;
clrscr();
do{
cout<<"n 1.Push n 2.Pop n 3.Exit n";
cout<<"n Enter your choice:";
cin>>ch;
switch(ch)
{
case 1:
cout<<"n 1.Integer 2.Character n";
cout<<"n Enter your choice :";
cin>>ch1;
if(ch1==1)
{
cout<<"n Enter Integer Element:";
cin>>iitem;
s1.push(iitem);
s1.display();
}
else
{
cout<<"n Enter Character Element: ";
cin>>citem;
s2.push(citem);
s2.display();
}
break;
case 2:
cout<<"n 1.Integer 2.Character n";
cout<<"n Enter your choice :";
cin>>ch1;
if(ch1==1)
{
s1.pop();
s1.display();
}
else
{
s2.pop();
s2.display();
}
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 8
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
break;
}
}while(ch<=2);
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 9
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 4)
/ * Implementation of Queues using singly LinkedList */
#include<iostream.h>
#include<conio.h>
template <class T>
class Listqueue
{
struct node
{
T data;
node *link;
}*front,*rear;
public:
Listqueue();
void Enqueue(T val);
T Dequeue();
void Print();
~Listqueue();
};
template <class T>
Listqueue<T>::Listqueue()
{
front=rear=NULL;
}
template <class T>
void Listqueue<T>::Enqueue(T val)
{
node *newnode,*ptr;
newnode=new node;
if(newnode==NULL)
{
cout<<"Queue is full!!!";
return;
}
else
{
newnode->data=val;
newnode->link=NULL;
if(rear==NULL)
{
front=rear=newnode;
return;
}
rear->link=newnode;
rear=rear->link;
}
}
template <class T>
T Listqueue<T>::Dequeue()
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 10
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
{
if(front==NULL)
{
cout<<"Queue is empty!!!";
return(0);
}
else
{
node *temp;
temp=front;
T val=front->data;
front=front->link;
delete temp;
cout<<"Deleted item is:";
return val;
}
}
template <class T>
void Listqueue<T>::Print()
{
if(front==NULL)
{
cout<<"Queue is empty!!!";
return;
}
else
{
node *ptr;
ptr=front;
cout<<"Elements in the Queue are:n" ;
while(ptr!=NULL)
{
cout<<ptr->data<<" ";
ptr=ptr->link;
}
}
}
template <class T>
Listqueue<T>::~Listqueue()
{
if(front==NULL)
return;
node *temp;
while(front!=NULL)
{
temp=front;
front=front->link;
delete temp;
}
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 11
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
}
void main()
{
clrscr();
Listqueue <int>obj;
int ch,flag=1;
while(flag==1)
{
cout<<"nMENU";
cout<<"n1.Insert";
cout<<"n2.Delete";
cout<<"n3.Print";
cout<<"n4.Exit";
cout<<"nEnter your choice:";
cin>>ch;
switch(ch)
{
case 1:
cout<<"nEnter the element to be inserted:";
int val;
cin>>val;
obj.Enqueue(val);
cout<<"Do you want to continue?(Yes=1 or No=0):";
cin>>flag;
break;
case 2:
cout<<obj.Dequeue();
cout<<"nDo you want to continue?(Yes=1 or No=0):";
cin>>flag;
break;
case 3:
obj.Print();
cout<<"nDo you want to continue?(Yes=1 or No=0):";
cin>>flag;
break;
case 4:
flag=0;
break;
default:
cout<<"Enter the right choice!!!";
}
}
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 12
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 5 a)
/* Convertion of infix expression into postfix expression */
#include <iostream.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
class intopost
{
char stack[30],infix[30],suffix[30];
int top;
public:
void push(char);
char pop();
int prior(char);
void postfix();
intopost(){
top=-1;
}
};
void intopost :: push(char ch)
{
stack[++top]=ch;
}
char intopost :: pop()
{
return stack[top--];
}
int intopost :: prior(char ch)
{
if(ch=='('||ch=='#')
return 1;
if(ch=='+'||ch=='-')
return 2;
if(ch=='*'||ch=='/')
return 3;
if(ch=='^'||ch=='$')
return 4;
}
void intopost :: postfix(){
int j=0;
push('#');
cout<<"n Enter valid infix expression :";
cin>>infix;
for(int i=0;infix[i]!='0';i++)
{
if(isalnum(infix[i]))
suffix[j++]=infix[i];
else if(infix[i]=='(')
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 13
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
push(infix[i]);
else if(infix[i]==')')
{
while(stack[top]!='(')
suffix[j++]=pop();
pop();
}
else
{
while(prior(stack[top])>=prior(infix[i]))
suffix[j++]=pop();
push(infix[i]);
}
}
while(stack[top]!='#')
suffix[j++]=pop();
suffix[j]='0';
cout<<"n The corresponding postfix expression is";
cout<<suffix;
}
void main()
{
intopost p;
clrscr();
p.postfix();
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 14
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 5b)
/* Convertion of infix expression into prefix expression */
#include <iostream.h>
#include <conio.h>
#include <ctype.h>
#include <string.h>
class intoprefix
{
char stack[30],infix[30],suffix[30];
int top;
public:
void push(char);
char pop();
int prior(char);
void prefix();
intoprefix()
{
top=-1;
}
};
void intoprefix :: push(char ch){
stack[++top]=ch;
}
char intoprefix :: pop(){
return stack[top--];
}
int intoprefix :: prior(char ch)
{
if(ch==')'||ch=='#')
return 1;
if(ch=='+'||ch=='-')
return 2;
if(ch=='*'||ch=='/')
return 3;
if(ch=='^'||ch=='$')
return 4;
}
void intoprefix :: prefix()
{
int j=0;
push('#');
cout<<"n Enter the valid infix expression:";
cin>>infix;
strrev(infix);
for(int i=0;infix[i]!='0';i++)
{
if(isalnum(infix[i]))
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 15
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
suffix[j++]=infix[i];
else if(infix[i]==')')
push(infix[i]);
else if(infix[i]=='(')
{
while(stack[top]!=')')
suffix[j++]=pop();
pop();
}
else
{
while((prior(stack[top])>prior(infix[i]))&&(stack[top]!=')'))
suffix[j++]=pop();
push(infix[i]);
}
}
while(stack[top]!='#')
suffix[j++]=pop();
suffix[j]='0';
strrev(suffix);
cout<<"n The corresponding prefix expression is:";
cout<<suffix;
}
void main()
{
intoprefix p;
clrscr();
p.prefix();
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 16
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 5c)
/* evaluation of posffix expression */
#include <iostream.h>
#include <conio.h>
#include <ctype.h>
#include <math.h>
#define MAX 50
class eval
{
int s[MAX],top;
char p[20];
double res;
public :
eval()
{
top=-1;
}
void push(double);
double pop();
double result(char, double, double);
void suffixeval();
};
void eval :: push(double e)
{
s[++top]=e;
}
double eval :: pop()
{
return s[top--];
}
double eval :: result(char p,double op1,double op2)
{
switch(p)
{
case '+': return (op2+op1);
case '-': return (op2-op1);
case '*': return (op2*op1);
case '/': return (op2/op1);
case '^': return pow(op2,op1);
}
}
void eval :: suffixeval()
{
cout<<"n Enter a valid postfix expression :";
cin>>p;
for(int i=0;p[i]!='0';i++)
{
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 17
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
if(isdigit(p[i]))
push((double)(p[i]-'0'));
else
{
double op1,op2;
op1=pop();
op2=pop();
double val=result(p[i],op1,op2);
push(val);
}
}
res=s[top];
cout<<"n After Evaluating result is: "<<res;
}
void main()
{
eval e;
clrscr();
e.suffixeval();
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 18
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 6)
/* implementation of deque using doubly linked list */
#include <iostream.h>
#include <conio.h>
template <class t>
class dll
{
private :
struct node
{
t data;
struct node *next;
struct node *prev;
}*head;
public :
dll(){
head=NULL;
}
void create();
void print();
void insert_front();
void insert_rear();
void del_front();
void del_rear();
};
template <class t>
void dll <t> :: create()
{
node *n1,*last,*temp;
char ans='y';
do
{
n1=new node;
cout<<"nEnter the data:";
cin>>n1->data;
n1->next=NULL;
n1->prev=NULL;
if(head==NULL)
{
head=n1;
last=n1;
}
else
{
last->next=n1;
n1->prev=last;
last=n1;
}
cout<<"n nEnter more ?";
ans=getche();
}while(ans=='y'||ans=='Y');
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 19
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
cout<<"n The list is createdn";
getch();
}
template <class t>
void dll <t> ::print()
{
node *temp;
temp=head;
if(temp==NULL)
{
cout<<"n The list is emptyn";
getch();
return;
}
else
{
cout<<"n The list is :";
while(temp!=NULL)
{
cout<<temp->data<<" ";
temp=temp->next;
}
}
getch();
}
template <class t>
void dll <t> ::insert_rear()
{
node *temp,*n1;
int val,flag=0;
cout<<"n Enter the data of the new node to insert";
cin>>val;
temp=head;
if(temp==NULL)
flag=1;
else
{
while(temp->next!=NULL)
temp=temp->next;
}
n1=new node;
if(n1==NULL)
cout<<"n Unable to allocate memoryn";
n1->data=val;
n1->next=NULL;
n1->prev=NULL;
if(flag==0)
{
temp->next=n1;
n1->prev=temp;
}
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 20
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
else
head=n1;
cout<<"n Node inserted ";
}
template <class t>
void dll <t> :: insert_front()
{
node *temp,*n1;
int data;
cout<<"n Enter the data of the new node to insert";
cin>>data;
n1=new node;
if(n1==NULL)
cout<<"n Unable to allocate memoryn";
n1->data=data;
n1->next=NULL;
n1->prev=NULL;
if(head)
{
n1->next=head;
head->prev=n1;
}
head=n1;
cout<<"n Node inserted ";
}
template <class t>
void dll <t> :: del_front()
{
node *curr, *temp;
curr=head;
if(curr==NULL)
cout<<"n Node not found";
else
{
if(head->next==NULL && head->prev==NULL)
head=NULL;
else
{
head=curr->next;
head->prev=NULL;
}
}
cout<<"n The item deleted";
delete curr;
}
template <class t>
void dll <t> :: del_rear()
{
node *curr,*temp;
curr=head;
while(curr->next!=NULL)
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 21
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
curr=curr->next;
temp=curr->prev;
temp->next=NULL;
delete curr;
cout<<" n The item is deletedn";
}
void main()
{
char ans='y';
int ch;
dll <int> d;
dll <char> c;
do{
cout<<"n" <<"MENU";
cout<<"n n1.Create";
cout<<"n n2.Display";
cout<<"n n3.Insertion by front";
cout<<"n n4.Insertion by rear";
cout<<"n n5.Deletion by front";
cout<<"n n6.Deletion by rear";
cout<<"n Enter your choice:";
cin>>ch;
switch(ch)
{
case 1:d.create();
break;
case 2:d.print();
break;
case 3:d.print();
d.insert_front();
d.print();
break;
case 4:d.insert_rear();
d.print();
break;
case 5:d.print();
d.del_front();
d.print();
break;
case 6:d.print();
d.del_rear();
d.print();
break;
default: cout<<"n Invalid choice";
}
cout<<"n Do you want to continue?";
ans=getch();
}
while(ans=='y'||ans=='Y');
cout<<"n n Enter the characters in a Queue"<<endl;
c.create();
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 22
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
c.print();
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 23
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 7)
/* Implementation of Binary search tree for the following operations
a) Inserting an element into a binary search tree
b) Deleting an element from a binary search tree
c) Searching for a key element in a binary search tree
*/
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
struct node
{
int element;
node *left,*right;
};
typedef struct node *nodeptr;
template <class t>
class BSTree
{
public:
void insert(t,nodeptr &);
void del(t, nodeptr &);
int delet(nodeptr &);
void search(t,nodeptr &);
void display(nodeptr &, int);
};
template <class t>
void BSTree <t> ::insert( t x,nodeptr &p)
{
if(p==NULL)
{
p=new node;
p->left=NULL;
p->right=NULL;
p->element=x;
}
else
{
if(x<p->element)
insert(x,p->left);
else if(x>p->element)
insert(x,p->right);
else
cout<<"n Eelement already exist!";
}
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 24
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
}
template <class t>
void BSTree <t> ::del(t x,nodeptr &p)
{
nodeptr d;
if(p==NULL)
cout<<"n Element not found";
else if(x<p->element)
del(x,p->left);
else if(x>p->element)
del(x,p->right);
else if((p->left==NULL)&&(p->right==NULL))
{
d=p;
delete d;
p=NULL;
cout<<"n Element deleted";
}
else if(p->left==NULL)
{
d=p;
delete d;
p=p->right;
cout<<"Element deleted";
}
else if(p->right==NULL)
{
d=p;
p=p->left;
delete d;
cout<<"n Element deleted";
}
else
p->element=delet(p->right);
}
template <class t>
int BSTree <t>:: delet(nodeptr &p)
{
int c;
if(p->left==NULL)
{
c=p->element;
p=p->right;
return c;
}
else
c=delet(p->left);
return c;
}
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 25
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR

template <class t>
void BSTree<t> :: search(t x, nodeptr &p)
{
if(p==NULL)
cout<<"n Element not found";
else
{
if(x<p->element)
search(x,p->left);
else if(x>p->element)
search(x,p->right);
else
cout<<"n Element found";
}
}
template <class t>
void BSTree <t>:: display(nodeptr &x,int level)
{
int i;
if(x)
{
display(x->right,level+1);
cout<<"n";
for(i=0;i<level;i++)
cout<<" ";
cout<<x->element;
display(x->left,level+1);
}
}
void main()
{
BSTree <int>t;
clrscr();
nodeptr root=NULL;
int item;
int ch;
do
{
cout<<"nn MENUn";
cout<<"n 1.Create 2.Display 3.Search 4.Delete 5.Exitn";
cin>>ch;
switch(ch)
{
case 1:while(1)
{
cout<<"Enter value:Enter -1 to stop:";
cin>>item;
if(item==-1)
break;
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 26
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
t.insert(item,root);
}
break;
case 2: t.display(root,1);
break;
case 3:cout<<"n Enter element to be inserted:";
cin>>item;
t.search(item,root);
break;
case 4:cout<<"n Enter the element to be deleted:";
cin>>item;
t.del(item,root);
break;
case 5: exit(0);
default: cout<<"n Invalid choice";
}
getch();
}
while (1);
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 27
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 8)
//implementation of circular queue ADT using Array
#include<iostream.h>
#include<conio.h>
#define MAX 5
template <class T>
class Cirqueue
{
T *Cqueue;
int front,rear;
public:
Cirqueue();
void Insertitem(T val);
T deleteitem();
void print();
~Cirqueue();
};
template <class T>
Cirqueue<T>::Cirqueue()
{
Cqueue=new T[MAX];
front=rear=-1;
}
template <class T>
void Cirqueue<T>::Insertitem(T val)
{
if(rear==-1)
{
front=rear=0;
Cqueue[rear]=val;
}
else
{
if(((rear+1)%MAX)!=front)
{
rear=(rear+1)%MAX;
Cqueue[rear]=val;
}
else
cout<<"Queue is FULL!!!";
}
}
template <class T>
T Cirqueue<T>::deleteitem()
{
if(front==-1)
{
cout<<"Queue is EMPTY!!!";
return(0);
}
else
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 28
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
{
T val=Cqueue[front];
if(front==rear)
front=rear=-1;
else
front=(front+1)%MAX;
return val;
}
}
template <class T>
void Cirqueue<T>::print()
{
if(front==-1)
{
cout<<"Queue is EMPTY!!!";
return;
}
else
{
for(int i=front;i<=rear;i++)
cout<<Cqueue[i]<<" ";
}
if(front>rear)
{
for(int m=front;m<MAX;m++)
cout<<Cqueue[m]<<" ";
for(int n=0;n<=rear;n++)
cout<<Cqueue[n]<<" ";
}
}
template <class T>
Cirqueue<T>::~Cirqueue()
{
delete[]Cqueue;
}
int main()
{
clrscr();
Cirqueue <int>obj;
int ch,flag=1;
while(flag==1)
{
cout<<"nMENU";
cout<<"n1.Insert";
cout<<"n2.Delete";
cout<<"n3.Print";
cout<<"n4.Exit";
cout<<"nEnter your choice:";
cin>>ch;
switch(ch)
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 29
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
{
case 1:
cout<<"nEnter the element to be inserted:";
int val;
cin>>val;
obj.Insertitem(val);
cout<<"Do you want to continue?(Yes=1 or No=0):";
cin>>flag;
break;
case 2:
cout<<"nDeleted item is:";
cout<<obj.deleteitem();
cout<<"nDo you want to continue?(Yes=1 or No=0):";
cin>>flag;
break;
case 3:
cout<<"nElements in the queue are:";
obj.print();
cout<<"nDo you want to continue?(Yes=1 or No=0):";
cin>>flag;
break;
case 4:
flag=0;
break;
default:
cout<<"Enter the right choice!!!";
}
}
return 0;
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 30
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 9)
/*Using non-recursive functions to traversing the given binary tree in
a) Preorder b) Inorder c) Postorder */
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int top=-1,top1=-1,ch;
template<class t>
class bst
{
struct node
/* definig structure for node */
{
public:
t data;
node *left,*right;
}*root,*a[20],*b[20];
public:
bst()
{
root=NULL;
}
struct node *insert(node *r,t val)
{
if(r==NULL)
/* insertion for first element */
{
r=new node;
r->data=val;
r->left=NULL;
r->right=NULL;
}
else
{
if(r->data<val)
r->right=insert(r->right,val);
else
r->left=insert(r->left,val);
}
return(r);
}
struct node *deletion(node *r,t val)
{
node *data,*d,*x,*p,*i;
int f=0;
x=r;
p=NULL;
while(x!=NULL)
{
if(x->data==val) /* search for element to delete */
{
d=x;
f=1;
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 31
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
break;
}
else if(val<x->data)
{
p=x;
x=x->left;
}
else
{
p=x;
x=x->right;
}
}
if(f==0)
cout<<"n element not found";
else
/* deletion of element */
{
if(d->left!=NULL && d->right!=NULL)
{
p=d;
i=d->left;
while(i->right!=NULL)
{
p=i;
i=i->right;
}
d->data=i->data;
d=i;
}
if(d->left!=NULL && d->right==NULL)
{
if(p==NULL)
r=d->left;
else if(d==p->left)
p->left=d->left;
else
p->right=d->right;
}
if(d->left==NULL && d->right!=NULL)
{
if(p==NULL)
r=NULL;
else if(d==p->left)
p->left==NULL;
else
p->right=NULL;
}
cout<<"n elements deleted ";
return(r);
}
}
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 32
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
void inorder_non_rec(node *r) /* inorder traversal */
{
node *l;
l=r;
do
{
while(l!=NULL)
{
push(l);
l=l->left;
}
while(top>-1)
{
l=pop();
cout<<" "<<l->data;
if(l->right!=NULL)
{
l=l->right;
break;
}
else
l=NULL;
}
}while(l!=NULL);
}
void preorder_non_rec(node *r) /* for pre order traversal */
{
node *l;
l=r;
do
{
cout<<" "<<l->data;
if(l->right!=NULL)
push(l->right);
l=l->left;
if(l==NULL && top>-1)
l=pop();
}while(l!=NULL);
}
void postorder_non_rec(node *r) /* for post order traversal */
{
node *l;
l=r;
do
{
while(l!=NULL)
{
push(l);
if(l->right!=NULL)
{
push(l->right);
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 33
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
b[++top1]=l->right;
}
l=l->left;
}
do
{
l=pop();
if(l!=b[top1])
cout<<" "<<l->data;
else
{
top1=top1-1;
break;
}
}while(top>-1);
}while(l!=NULL && top>-1);
}
void push(node *r) /* function for pushing */
{
top=top+1;
a[top]=r;
}
struct node *pop() /* function for popping */
{
return a[top--];
}
int function()
/* function for calling operations */
{
t element;
cout<<"nmenu n 1 insert 2 inorder 3 preorder 4 post order 5 delete 6 exitn";
do
{
cout<<"n enter ur choice ";
cin>>ch;
switch(ch)
{
case 1:cout<<"n enter element to be inserted:";
cin>>element;
root=insert(root,element);
break;
case 2:cout<<"n rec inorder traversal:";
inorder_non_rec(root);
break;
case 3:cout<<"n rec preorder traversal :";
preorder_non_rec(root);
break;
case 4:cout<<"n rec post order traversal:";
postorder_non_rec(root);
break;
case 5:cout<<"n enter element to be deleted :";
cin>>element;
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 34
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
deletion(root,element);
break;
case 6:return(0);
}
}while(ch<6);
}
};
void main()
{
bst<int>b1;
bst<float>b2;
bst<char>b3;
clrscr();
while(1)
{
cout<<"n data type n 1 int 2 float 3 char 4 exit n";
cout<<"enter data type n";
cin>>ch;
switch(ch)
{
case 1:b1.function();
break;
case 2:b2.function();
break;
case 3:b3.function();
break;
case 4:exit(1);
}
}
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 35
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 10 a)
// Program for the implementation of Breadth First Search of graph
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#define max 10
class que
{
private :
int arr[max];
int rear,front;
public:
void insert(int);
int del();
int isqempty();
int isqful();
que()
{
front=rear=-1;
}
};
void que::insert(int item)
{
if(isqful())
cout<<"n Queue is full";
else
{
rear++;
arr[rear]=item;
if(front==-1)
front=0;
}
}
int que::del()
{
int item;
if(isqempty())
{
cout<<"nqueue is empty";
return NULL;
}
else
{
item=arr[front];
if(front==rear)
front=rear=-1;
else
front++;
return item;
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 36
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
}
}
int que:: isqempty()
{
if(front==-1)
return 1;
else
return 0;
}
int que::isqful()
{
if(rear==max-1)
return 1;
else
return 0;
}
que q;
class graph
{
private :
int adj[max][max];
int vst[max];
int n;
public :
graph()
{
n=0;
}
void buildadjm();
void bfs(int x);
void menu();
};
void graph::buildadjm()
{
int i,j;
cout<<"n Enter the graph in the matrix form:n";
for(i=1;i<=n;i++)
{
cout<<"nEnter "<<i<<"row";
for(j=1;j<=n;j++)
cin>>adj[i][j];
}
}
void graph::bfs(int x)
{
int j,k;
if(vst[x]==0)
{
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 37
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
vst[x]=1;
cout<<" "<<x;
}
for(;;)
{
for (j=1;j<=n ;j++ )
{
if((adj[x][j]==1)&&(vst[j]==0))
{
q.insert(j);
vst[j]=1;
}
if(q.isqempty())
return;
else
{
k=q.del();
cout<<" "<<k;
}
}
}
}
void graph::menu()
{
int i;
cout<<"nn Enter number of nodes:";
cin>>n;
buildadjm();
for(i=1;i<=n;i++)
vst[i]=0;
cout<<"n The bfs traversal is as follows:n";
for(i=1;i<=n;i++)
if(vst[i]==0)
bfs(i);
getch();
}
void main()
{
clrscr();
graph g;
g.menu();
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 38
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 10 b)
// Program for the implementation of Depth First Search of graph
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#define max 10
class graph
{
private:
int adj[max][max];
int vst[max];
int n;
public :
graph()
{
n=0;
}
void buildadjm();
void dfs(int x);
void menu();
};
void graph::buildadjm()
{
int i,j;
cout<<"n Enter the graph in the matrix form:n";
for(i=1;i<=n;i++)
{
cout<<"nEnter "<<i<<"Row :";
for(j=1;j<=n;j++)
cin>>adj[i][j];
}
}
void graph::dfs(int x)
{
int j;
vst[x]=1;
cout<<" "<<x;
for(j=1;j<=n;j++)
{
if((adj[x][j]==1)&&(vst[j]==0))
dfs(j);
}
}
void graph::menu()
{
int i;
cout<<"nn Enter number of nodes:";
cin>>n;
buildadjm();
for(i=1;i<=n;i++)
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 39
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
vst[i]=0;
cout<<"n The dfs traversal is as follows:n";
for(i=1;i<=n;i++)
if(vst[i]==0)
dfs(i);
getch();
}
void main()
{
clrscr();
graph g;
g.menu();
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 40
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 11 a)
// Program for the implementation of Quick sort
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
void quick(int,int);
int a[100];
void main()
{
int i,n,lo,hi;
clrscr();
cout<<"enter no.of elements";
cin>>n;
cout<<"enter elements";
for(i=0;i<n;i++)
cin>>a[i];
/* reading elements */
lo=0;
hi=n-1;
quick(lo,hi);
cout<<"sorted elements are:n";
for(i=0;i<n;i++)
cout<<a[i]<<"t";
getch();
}
void quick(int l,int h)
/* using quick sort */
{
int i,j,pivot,pin,t;
i=l+1;
j=h;
pivot=a[l];
pin=l;
if(l<h)
{
do
{
while(a[i]<pivot&&i<=h)
i++;
while(a[j]>pivot&&j>=l)
j--;
if(i<j)
{
/* swapping */
t=a[j];
a[j]=a[i];
a[i]=t;
}
}while(i<j);
t=a[pin];
a[pin]=a[j];
a[j]=t;
quick(l,j-1);
quick(j+1,h);
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 41
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
}
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 42
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 11 b)
// Program for the implementation of Merge sort
#include<iostream.h>
#include<conio.h>
void mergesort(int,int);
void merge(int,int,int);
int a[10],b[10];
void main()
{
int i,n,lo,hl;
clrscr();
cout<<"enetr no.of elemnets :";
cin>>n;
cout<<"enetr elements into array";
for(i=0;i<n;i++)
cin>>a[i];
/*reading elements */
lo=0;
hl=n-1;
mergesort(lo,hl);
cout<<"sorted elements are:n";
for(i=0;i<n;i++)
cout<<"t"<<a[i];
getch();
}
void mergesort(int l,int h)
{
int mid;
if(l<h)
{
mid=(l+h)/2;
/* breaking array into two parts */
mergesort(l,mid);
mergesort(mid+1,h);
merge(l,mid,h);
}
}
void merge(int l,int mid,int h)
{
int i,j,k,hl;
i=l;
j=mid+1;
k=l;
while(i<=mid&&j<=h)
{
if(a[i]<a[j])
{
b[k]=a[i];
i++;
}
else
{
b[k]=a[j];
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 43
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
j++;
}
k++;
}
if(i>mid)
/* finding largest element from two parts */
{
for(hl=j;hl<=h;hl++)
b[k++]=a[hl];
}
else if(j>h)
{
for(hl=i;hl<=mid;hl++)
b[k++]=a[hl];
}
for(k=l;k<=h;k++)
a[k]=b[k];
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 44
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 11 c)
// Program for the implementation of Heap sort
#include<iostream.h>
#include<conio.h>
int x[10],i,n;
void heap(int);
void maxheap(int);
void main()
{
clrscr();
cout<<"enter no of elements";
cin>>n;
cout<<"enetr the elements";
for(i=1;i<=n;i++)
cin>>x[i];
/* reading elements */
heap(n);
cout<<"sorted elements are:";
for(i=1;i<=n;i++)
cout<<x[i]<<"t";
}
void heap(int n)
{
int t;
while(n>1)
{
maxheap(n); /* calling max heap */
t=x[1];
x[1]=x[n];
x[n]=t;
n=n-1;
}
}
void maxheap(int n)
{
int i,t,j;
for(i=2;i<=n;i++)
{
t=x[i];
j=i;
while(x[j/2]<t&&j>1)
{
x[j]=x[j/2];
j=j/2;
}
x[j]=t;
}
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 45
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 12 a)
// Program to implement linear search in both recursive and non-recursive
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
template <class t>
class search
{
t a[20],key;
int n;
void getdata();
int linsearch(t);
public:
void menu();
};
template <class t>
void search<t>::getdata()
{
cout<<"n Enter the size of array:";
cin>>n;
cout<<"n Enter array Elementsn";
for(int i=1;i<=n;i++)
cin>>a[i];
}
template <class t>
int search<t>::linsearch(t key)
{
for(int i=1;i<=n;i++)
{
if(a[i]==key)
return i;
}
return -1;
}
template <class t>
void search<t> :: menu()
{
int pos,ch;
getdata();
cout<<"n Enter the key value:";
cin>>key;
pos=linsearch(key);
if(pos!=-1)
cout<<"n The key"<< key <<" is found at postion:"<<pos;
else
cout<<"n Serach is unsuccessful";
getch();
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 46
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
}
void main()
{
clrscr();
search <int> s1;
search <char> s2;
do
{
char ch;
cout<<"n MENU n";
cout<<"n 1.Integer 2.Character 3.Exit";
cout<<"n Enter your choice:";
cin>>ch;
switch(ch)
{
case '1':s1.menu();
break;
case '2':
s2.menu();
break;
case '3':
exit(0);
default: cout<<"n Invalid choice";
}
getch();
}
while (1);
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 47
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 12 b)
// Program to implement Binary search in both recursive and non-recursive
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
template <class t>
class search
{
t a[20],key;
int n;
void getdata();
void showdata();
void sort();
int binsearch(t);
public:
void menu();
};
template <class t>
void search <t> ::getdata()
{
cout<<"n Enter size of array:";
cin>>n;
cout<<"n Enter array elementsn";
for(int i=0;i<n;i++)
cin>>a[i];
}
template <class t>
void search <t> ::showdata()
{
for(int i=0;i<n;i++)
cout<<" "<<a[i];
}
template <class t>
void search <t> ::sort()
{
for (int i=0;i<n ;i++ )
{
for(int j=i+1;j<n;j++)
{
if(a[i]>a[j])
{
t temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 48
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
template <class t>
int search <t> ::binsearch(t key)
{
int low,high,mid;
low=0;
high=n-1;
while(low<=high)
{
mid=(low+high)/2;
if(a[mid]==key)
return mid;
else
if(key>a[mid])
low=mid+1;
else
high=mid-1;
}
return -1;
}
template <class t>
void search <t> ::menu()
{
int pos,ch;
getdata();
cout<<"n Before sorting";
showdata();
sort();
cout<<"n After sorting";
showdata();
cout<<"n Enter key value:";
cin>>key;
pos=binsearch(key);
if(pos!=-1)
cout<<"The key"<<key<<" is found at position "<< pos;
else
cout<<"n Search is unsuccessful";
}
void main()
{
clrscr();
search <int> s1;
search <char> s2;
do
{
char ch;
cout<<"n MENUn";
cout<<" 1.Integer 2.Character 3.Exit";
cout<<"n Enter your choice:";
cin>>ch;
switch(ch)
{
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 49
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
case '1':s1.menu();
break;
case '2':s2.menu();
break;
case '3':exit(0);
default: cout<<"n Invalid choice!";
getch();
}
}while(1);
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 50
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 13)
// Program to implement AVL tree to for the following operations
a) Insertion into AVL tree
b) Deletion from an AVL tree
#include <iostream.h>
#include <conio.h>
#define FALSE 0
#define TRUE 0
struct node
{
int data;
node *left;
node *right;
int height;
};
typedef node *nodeptr;
template <class t>
class avl
{
public :
void insert(t,nodeptr &);
void delet(t,nodeptr &);
void show(nodeptr &,int);
int avlheight(nodeptr);
int deletmax(nodeptr &);
nodeptr sinrotleft(nodeptr &);
nodeptr sinrotright(nodeptr &);
nodeptr dourotleft(nodeptr &);
nodeptr dourotright(nodeptr &);
int max(t,t);
};
template <class t>
void avl <t> :: insert (t x, nodeptr &p)
{
if(p== NULL)
{
p=new node;
p->data=x;
p->left=NULL;
p->right=NULL;
p->height=0;
}
else
{
if(x<p->data)
{
insert(x,p->left);
if(avlheight(p->left)-avlheight(p->right) ==2)
{
if(x<p->left->data)
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 51
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR

p=sinrotleft(p);
else
p=dourotleft(p);
}
}
else
{
if(x>p->data)
{
insert(x,p->right);
if((avlheight(p->right)-avlheight(p->left) == 2)
{
if(x<p->right->data)
p=sinrotleft(p);
else
p=dourotleft(p);
}
}
else
{
cout<<"n Element already exist";
return;
}
}
int m,n,d;
m=avlheight(p->left);
n=avlheight(p->right);
d=max(m,n);
p->height=d+1;
}
template <class t>
void avl <t> :: show(nodeptr &x,t level)
{
int i;
if(x)
{
show(x->right,level+1);
cout<<"n";
for(i=0;i<level;i++)
cout<<" ";
cout<<" "<<x->data;
show(x->left,level+1);
}
}
template <class t>
nodeptr avl <t> :: dourotleft(nodeptr &p1)
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 52
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
{
p1->left=sinrotright(p1->left);
return sinrotleft(p1);
}
template <class t>
nodeptr avl <t> :: dourotright(nodeptr &p1)
{
p1->right=sinrotright(p1->right);
return sinrotright(p1);
}
template <class t>
nodeptr avl <t> :: sinrotright(nodeptr &p1)
{
nodeptr p2;
p2=p1->right;
p1->right=p2->left;
p2->left=p1;
p1->height=max(avlheight(p1->left),avlheight(p1->right));
p2->height=max(p1->height,avlheight(p2->right)+1);
return p2;
}
template <class t>
nodeptr avl <t> :: sinrotleft(nodeptr &p1)
{
nodeptr p2;
p2=p1->left;
p1->left=p2->right;
p2->right=p1;
p1->height=max(avlheight(p1->left),avlheight(p1->right));
p2->height=max(avlheight(p2->left),p1->height+1);
return p2;
}
template <class t>
void avl <t> :: delet(t x,nodeptr &p)
{
nodeptr d;
if(p==NULL)
cout<<"n Element not found!";
else
if(x<p->data)
{
delet(x,p->left);
if((avlheight(p->right)-avlheight(p->left))==2)
{
int u,pu,gu;
gu=p->data;
pu=p->right->data;
if(p->right->right==NULL)
u=p->right->left->data;
else
u=p->right->right->data;
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 53
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
if(gu<pu && pu<u)
p=sinrotright(p);
else
p=dourotright(p);
}
}
else if(x>p->data)
{
delet(x,p->right);
if((avlheight(p->left)-avlheight(p->right))==2)
{
int u,pu,gu;
gu=p->data;
pu=p->left->data;
if(p->right->right==NULL)
u=p->left->right->data;
else
u=p->left->left->data;
if(gu>pu && pu>u)
p=sinrotright(p);
else
p=dourotright(p);
}
}
else
if((p->left==NULL) && (p->right==NULL))
{
d=p;
delete d;
p=NULL;
cout<<"n Element deleted!";
return;
}
else if(p->left==NULL)
{
d=p;
delete d;
p=p->right;
cout<<"n Element deleted";
return;
}
else if(p->right==NULL)
{
d=p;
delete d;
p=p->left;
cout<<"n Element deleted";
return;
}
else
{
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 54
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
p->data=deletmax(p->left);
int m,n,d1;
m=avlheight(p->left);
n=avlheight(p->right);
d1=max(m,n);
p->height=d1+1;
}
}
template <class t>
int avl <t> :: avlheight(nodeptr p)
{
int t;
if(p==NULL)
return 0;
else
{
t=p->height;
return t;
}
}
template <class t>
int avl <t> :: deletmax(nodeptr &p)
{
int c;
if(p->right==NULL)
{
c=p->data;
p=p->left;
return c;
}
else
{
c=deletmax(p->right);
return c;
}
}
template <class t>
int avl <t> :: max(t v1,t v2)
{
return ((v1>v2)?v1:v2);
}
void main()
{
clrscr();
nodeptr root=NULL;
int element;
avl <int> a1;
while(1)
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 55
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
{
cout<<"nEnter elements to insert(Enter -1 to exit) :";
cin>>element;
if(element==-1)
break;
a1.insert(element,root);
}
cout<<"n The tree after insertion:";
a1.show(root,1);
cout<<"n Enter the element to be deleted:";
cin>>element;
cout<<"n the tree after deletion :n";
a1.show(root,1);
cout<<"n";
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 56
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
Program 14)
// Program to implement Kruskal’s algorithm to generate a minimum cost spanning tree
#include <iostream.h>
#include <conio.h>
#define INFINITY 999
template <class t>
class kruskal
{
private:
typedef struct Graph
{
int v1;
int v2;
t cost;
}GR;
GR G[20];
public :
int tot_edges,tot_nodes;
void create();
void spanning_tree();
void get_input();
int minimum(int);
};
int Find(int v2,int parent[])
{
while(parent[v2]!=v2)
{
v2=parent[v2];
}
return v2;
}
void Union(int i,int j,int parent[])
{
if(i<j)
parent[j]=i;
else
parent[i]=j;
}
template <class t>
void kruskal <t>::get_input()
{
cout<<"n Enter Total number of nodes: ";
cin>>tot_nodes;
cout<<"n Enter Total number of edges: ";
cin>>tot_edges;
}
template <class t>
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 57
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
void kruskal <t>::create()
{
for(int k=0;k<tot_edges;k++)
{
cout<<"n Enter Edge in (v1, v2) from";
cin>>G[k].v1>>G[k].v2;
cout<<"n Enter Corresponding cost ";
cin>>G[k].cost;
}
}
template <class t>
int kruskal <t>::minimum(int n)
{
int i,small,pos;
small=INFINITY;
pos=-1;
for(i=0;i<n;i++)
{
if(G[i].cost<small)
{
small=G[i].cost;
pos=i;
}
}
return pos;
}
template <class t>
void kruskal <t>::spanning_tree()
{
int count,k,v1,v2,i,j,tree[10][10],pos,parent[10];
t sum;
count=0;
k=0;
sum=0;
for(i=0;i<tot_nodes;i++)
parent[i]=i;
while(count!=tot_nodes-1)
{
pos=minimum(tot_edges);
if(pos==-1)
break;
v1=G[pos].v1;
v2=G[pos].v2;
i=Find(v1,parent);
j=Find(v2,parent);
if(i!=j)
{
tree[k][0]=v1;
tree[k][1]=v2;
k++;
count++;
COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 58
Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR
sum+=G[pos].cost;
Union(i,j,parent);
}
G[pos].cost=INFINITY;
}
if(count==tot_nodes-1)
{
cout<<"n Spanning tree is..."<<endl;
cout<<"n _____________"<<endl;
for(i=0;i<tot_nodes-1;i++)
{
cout<<"["<<tree[i][0];
cout<<" - ";
cout<<tree[i][1]<<"]"<<endl;
}
cout<<"n ___________"<<endl;
cout<<"Cost of spanning tree is = "<<sum<<endl;
}
else
{
cout<<"There is no spanning Tree"<<endl;
}
}
void main()
{
kruskal <int> obj;
clrscr();
cout<<"n t Graph creation ";
obj.get_input();
obj.create();
obj.spanning_tree();
getch();
}

COMPUTER SCIENCE AND ENGINEERING(2012-13)

Page 59

More Related Content

DOCX
39927902 c-labmanual
PPTX
ACM Distinguished Program: Cooperative Testing and Analysis: Human-Tool, Tool...
PDF
Critical buckling load geometric nonlinearity analysis of springs with rigid ...
PDF
Critical buckling load geometric nonlinearity analysis of springs with rigid ...
DOCX
DAA Lab File C Programs
DOCX
Cg my own programs
PDF
Pure Future
PDF
Computer graphics lab report with code in cpp
39927902 c-labmanual
ACM Distinguished Program: Cooperative Testing and Analysis: Human-Tool, Tool...
Critical buckling load geometric nonlinearity analysis of springs with rigid ...
Critical buckling load geometric nonlinearity analysis of springs with rigid ...
DAA Lab File C Programs
Cg my own programs
Pure Future
Computer graphics lab report with code in cpp

What's hot (20)

PDF
C program
PDF
DOCX
Java Program
PDF
Berlin meetup
PDF
Spotify 2016 - Beyond Lambdas - the Aftermath
DOCX
Data structure new lab manual
DOCX
Os lab file c programs
PDF
C programs
PDF
DOC
Daa practicals
PDF
DSU C&C++ Practical File Diploma
PPT
Struct examples
PDF
JDays 2016 - Beyond Lambdas - the Aftermath
PPTX
Flying Futures at the same sky can make the sun rise at midnight
DOCX
Lab manual operating system [cs 502 rgpv] (usefulsearch.org) (useful search)
PDF
design and analysis of algorithm Lab files
DOCX
Numerical Method Assignment
DOC
SE Computer, Programming Laboratory(210251) University of Pune
DOCX
Data Structure Project File
C program
Java Program
Berlin meetup
Spotify 2016 - Beyond Lambdas - the Aftermath
Data structure new lab manual
Os lab file c programs
C programs
Daa practicals
DSU C&C++ Practical File Diploma
Struct examples
JDays 2016 - Beyond Lambdas - the Aftermath
Flying Futures at the same sky can make the sun rise at midnight
Lab manual operating system [cs 502 rgpv] (usefulsearch.org) (useful search)
design and analysis of algorithm Lab files
Numerical Method Assignment
SE Computer, Programming Laboratory(210251) University of Pune
Data Structure Project File
Ad

Viewers also liked (20)

DOC
Short dec
PDF
Drum Bin Handling Guide R0
PPT
C Language Unit-7
PPT
Lect 15-16 Zaheer Abbas
PDF
Construindo a pae da ueg
PDF
Artigo, bulyng e serviço social
PDF
From value chain to value constellation
PPTX
new encryption technique
PPTX
Personal identification
PDF
Guia de TGA (análisis termogravimétrico)
PPT
Levels of strategy
PPTX
Simple Past Tense
PPS
Felicitación de navidad 2013
PDF
Rent in dubai marina
PDF
Bí quyết thành công của 100 thương hiệu hàng đầu thế giới
PDF
C bjt-biasing-and-stabilization
DOCX
Press Release 2
PDF
National accounts a practical introduction
PPTX
Sole a sarita
Short dec
Drum Bin Handling Guide R0
C Language Unit-7
Lect 15-16 Zaheer Abbas
Construindo a pae da ueg
Artigo, bulyng e serviço social
From value chain to value constellation
new encryption technique
Personal identification
Guia de TGA (análisis termogravimétrico)
Levels of strategy
Simple Past Tense
Felicitación de navidad 2013
Rent in dubai marina
Bí quyết thành công của 100 thương hiệu hàng đầu thế giới
C bjt-biasing-and-stabilization
Press Release 2
National accounts a practical introduction
Sole a sarita
Ad

Similar to Dsprograms(2nd cse) (20)

PPT
Exploring the Stack Stack operation.pptx
PPT
Linked list-stack-queue Data Structure .ppt
PPT
cs201-list-stack-queue-linked-list (2).ppt
PPT
cs201-list-stack-queue-linked-lists .ppt
PPT
Data Structures and Discrete Mathematics
PPT
List Data Structure, Linked List, Stacks.ppt
PDF
Datastructures asignment
PPT
lect- 3&4.ppt
PPT
Unit i(dsc++)
PDF
Data Structure
PDF
stacks and queues
PPTX
Stack and its applications
PPT
Ch03_stacks_and_queues.ppt
PPT
cs201-list-stack-queue.ppt
PPTX
Stack and Queue.pptx university exam preparation
DOCX
Stack array
PDF
Data Structures and Files
PPTX
TSAT Presentation1.pptx
PDF
Lab Manual-OOP.pdf
PPTX
Data Structures Algorithms and Applications
Exploring the Stack Stack operation.pptx
Linked list-stack-queue Data Structure .ppt
cs201-list-stack-queue-linked-list (2).ppt
cs201-list-stack-queue-linked-lists .ppt
Data Structures and Discrete Mathematics
List Data Structure, Linked List, Stacks.ppt
Datastructures asignment
lect- 3&4.ppt
Unit i(dsc++)
Data Structure
stacks and queues
Stack and its applications
Ch03_stacks_and_queues.ppt
cs201-list-stack-queue.ppt
Stack and Queue.pptx university exam preparation
Stack array
Data Structures and Files
TSAT Presentation1.pptx
Lab Manual-OOP.pdf
Data Structures Algorithms and Applications

Recently uploaded (20)

PPTX
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PDF
Sports Quiz easy sports quiz sports quiz
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
TR - Agricultural Crops Production NC III.pdf
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
Pre independence Education in Inndia.pdf
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PDF
Insiders guide to clinical Medicine.pdf
PDF
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
PDF
Complications of Minimal Access Surgery at WLH
PDF
Classroom Observation Tools for Teachers
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PPTX
Lesson notes of climatology university.
IMMUNITY IMMUNITY refers to protection against infection, and the immune syst...
STATICS OF THE RIGID BODIES Hibbelers.pdf
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Sports Quiz easy sports quiz sports quiz
Final Presentation General Medicine 03-08-2024.pptx
TR - Agricultural Crops Production NC III.pdf
human mycosis Human fungal infections are called human mycosis..pptx
Pre independence Education in Inndia.pdf
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Microbial diseases, their pathogenesis and prophylaxis
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
Insiders guide to clinical Medicine.pdf
ANTIBIOTICS.pptx.pdf………………… xxxxxxxxxxxxx
Complications of Minimal Access Surgery at WLH
Classroom Observation Tools for Teachers
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Lesson notes of climatology university.

Dsprograms(2nd cse)

  • 1. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 1) /* Implementation of STACK ADT using arrays */ #include<iostream.h> #include<conio.h> template <class t> class stack { t s[20]; int top,size; public: stack (int); void push(t); t pop(); void display(); }; template <class t> stack <t> :: stack(int n) { top=-1; size=n; } template <class t> void stack<t> :: push(t item) { if(top>=size-1) cout<<"stack is full"; else s[++top]=item; } template <class t> t stack <t> :: pop() { if(top==-1) { cout<<"n stack is emptyn"; return 0; } else return (s[top--]); } template <class t> void stack <t> :: display() { if(top==-1) cout<<"n stack is emptyn"; else { cout<<"n the stack elements aren"; for(int i=top;i>=0;i--) cout<<s[i]<<endl; } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 1
  • 2. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR } void main() { stack <int> s1(20); stack <char> s2(20); int ch,ch1; int iitem,piitem; char citem,pcitem; clrscr(); do { cout<<"nn 1.pushn 2.pop n 3.exitn"; cout<<"n Enter ur choice:"; cin>>ch; switch(ch) { case 1: cout<<"n 1.Integer n 2.Character n"; cin>>ch1; if(ch1==1) { cout<<"n Enter the element:"; cin>>iitem; s1.push(iitem); s1.display(); } else { cout<<"n Enter the character :"; cin>>citem; s2.push(citem); s2.display(); } break; case 2: cout<<"n 1.Integer n 2.Character n"; cout<<"Enter ur choice :"; cin>>ch1; if(ch1==1) { piitem=s1.pop(); cout<<"n The popped element is n"; cout<<piitem; s1.display(); } else { pcitem=s2.pop(); cout<<"n The popped element is n"; cout<<pcitem; s2.display(); COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 2
  • 3. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR } break; } }while(ch<=2); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 3
  • 4. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 2) /* Implementation of QUEUE ADT using arrays */ #include <iostream.h> #include <conio.h> template <class t> class queue { t q[10]; int front,rear,size; public: queue(int); void insert(t); t del(); void display(); }; template <class t> queue <t>:: queue(int n) { rear=-1; front=-1; size=n; } template <class t> void queue <t> :: insert(t item) { if(rear==size-1) cout<<"n Queue is full n"; else { q[++rear]=item; if(front==-1) front=0; } } template <class t> t queue <t> :: del() { if(front==-1) { cout<<"n queue is empty n"; return 0; } else { if(front==rear) { int temp=q[front]; front=-1; COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 4
  • 5. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR rear=-1; return temp; } else return (q[front++]); } } template <class t> void queue <t> :: display() { if(front==-1) cout<<"n queue is emptyn"; else { cout<<"n the queue elements are :n"; for( int i=front;i<=rear;i++) cout<<q[i]<<endl; } } void main() { queue <int> q1(20); queue <char> q2(20); int ch,ch1,iitem,ditem; char citem,dcitem; clrscr(); do { cout<<"n 1.Insertionn 2.Deletion n 3.Exitn"; cout<<"n Enter your choice:"; cin>>ch; switch(ch) { case 1: cout<<"n 1.Integer n 2.Character n"; cout<<"n Enter ur choice :"; cin>>ch1; if(ch1==1) { cout<<"n Enter the element :"; cin>>iitem; q1.insert(iitem); q1.display(); } else { cout<<"n Enter the element :"; cin>>citem; q2.insert(citem); COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 5
  • 6. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR q2.display(); } break; case 2: cout<<"n 1. Integer 2. Character n"; cout<<"n Enter your choice:"; cin>>ch1; if(ch1==1) { ditem=q1.del(); cout<<"n The deleted integer item is :"<<ditem; q1.display(); } else { dcitem=q2.del(); cout<<"n The deleted character item is :"<<dcitem; q2.display(); } break; } }while(ch<=2); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 6
  • 7. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 3) /* Implementation STACK ADT using singly linked list */ #include <iostream.h> #include <conio.h> template <class t> class stack { protected: struct node { t data; node *link; }; node *top; public: void push(t); void pop(); void display(); stack() { top=NULL; } }; template <class t> void stack <t> :: push(t item) { node *first=new node[1]; first->data=item; first->link=top; top=first; } template <class t> void stack <t> :: pop() { if(top==NULL) cout<<"n stack is empty n"; else { cout<<"n the popped elemtn is :"<<top->data; top=top->link; } } template <class t> void stack <t> :: display() { if(top==NULL) cout<<"stack is empty"; else { node *list=top; cout<<"n The elements in the stack are n"; COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 7
  • 8. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR while(list->link!=NULL) { cout<<list->data<<endl; list=list->link; } cout<<list->data; } } void main() { stack <int> s1; stack <char> s2; int ch,ch1,iitem; char citem; clrscr(); do{ cout<<"n 1.Push n 2.Pop n 3.Exit n"; cout<<"n Enter your choice:"; cin>>ch; switch(ch) { case 1: cout<<"n 1.Integer 2.Character n"; cout<<"n Enter your choice :"; cin>>ch1; if(ch1==1) { cout<<"n Enter Integer Element:"; cin>>iitem; s1.push(iitem); s1.display(); } else { cout<<"n Enter Character Element: "; cin>>citem; s2.push(citem); s2.display(); } break; case 2: cout<<"n 1.Integer 2.Character n"; cout<<"n Enter your choice :"; cin>>ch1; if(ch1==1) { s1.pop(); s1.display(); } else { s2.pop(); s2.display(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 8
  • 9. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR break; } }while(ch<=2); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 9
  • 10. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 4) / * Implementation of Queues using singly LinkedList */ #include<iostream.h> #include<conio.h> template <class T> class Listqueue { struct node { T data; node *link; }*front,*rear; public: Listqueue(); void Enqueue(T val); T Dequeue(); void Print(); ~Listqueue(); }; template <class T> Listqueue<T>::Listqueue() { front=rear=NULL; } template <class T> void Listqueue<T>::Enqueue(T val) { node *newnode,*ptr; newnode=new node; if(newnode==NULL) { cout<<"Queue is full!!!"; return; } else { newnode->data=val; newnode->link=NULL; if(rear==NULL) { front=rear=newnode; return; } rear->link=newnode; rear=rear->link; } } template <class T> T Listqueue<T>::Dequeue() COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 10
  • 11. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR { if(front==NULL) { cout<<"Queue is empty!!!"; return(0); } else { node *temp; temp=front; T val=front->data; front=front->link; delete temp; cout<<"Deleted item is:"; return val; } } template <class T> void Listqueue<T>::Print() { if(front==NULL) { cout<<"Queue is empty!!!"; return; } else { node *ptr; ptr=front; cout<<"Elements in the Queue are:n" ; while(ptr!=NULL) { cout<<ptr->data<<" "; ptr=ptr->link; } } } template <class T> Listqueue<T>::~Listqueue() { if(front==NULL) return; node *temp; while(front!=NULL) { temp=front; front=front->link; delete temp; } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 11
  • 12. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR } void main() { clrscr(); Listqueue <int>obj; int ch,flag=1; while(flag==1) { cout<<"nMENU"; cout<<"n1.Insert"; cout<<"n2.Delete"; cout<<"n3.Print"; cout<<"n4.Exit"; cout<<"nEnter your choice:"; cin>>ch; switch(ch) { case 1: cout<<"nEnter the element to be inserted:"; int val; cin>>val; obj.Enqueue(val); cout<<"Do you want to continue?(Yes=1 or No=0):"; cin>>flag; break; case 2: cout<<obj.Dequeue(); cout<<"nDo you want to continue?(Yes=1 or No=0):"; cin>>flag; break; case 3: obj.Print(); cout<<"nDo you want to continue?(Yes=1 or No=0):"; cin>>flag; break; case 4: flag=0; break; default: cout<<"Enter the right choice!!!"; } } getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 12
  • 13. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 5 a) /* Convertion of infix expression into postfix expression */ #include <iostream.h> #include <conio.h> #include <ctype.h> #include <string.h> class intopost { char stack[30],infix[30],suffix[30]; int top; public: void push(char); char pop(); int prior(char); void postfix(); intopost(){ top=-1; } }; void intopost :: push(char ch) { stack[++top]=ch; } char intopost :: pop() { return stack[top--]; } int intopost :: prior(char ch) { if(ch=='('||ch=='#') return 1; if(ch=='+'||ch=='-') return 2; if(ch=='*'||ch=='/') return 3; if(ch=='^'||ch=='$') return 4; } void intopost :: postfix(){ int j=0; push('#'); cout<<"n Enter valid infix expression :"; cin>>infix; for(int i=0;infix[i]!='0';i++) { if(isalnum(infix[i])) suffix[j++]=infix[i]; else if(infix[i]=='(') COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 13
  • 14. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR push(infix[i]); else if(infix[i]==')') { while(stack[top]!='(') suffix[j++]=pop(); pop(); } else { while(prior(stack[top])>=prior(infix[i])) suffix[j++]=pop(); push(infix[i]); } } while(stack[top]!='#') suffix[j++]=pop(); suffix[j]='0'; cout<<"n The corresponding postfix expression is"; cout<<suffix; } void main() { intopost p; clrscr(); p.postfix(); getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 14
  • 15. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 5b) /* Convertion of infix expression into prefix expression */ #include <iostream.h> #include <conio.h> #include <ctype.h> #include <string.h> class intoprefix { char stack[30],infix[30],suffix[30]; int top; public: void push(char); char pop(); int prior(char); void prefix(); intoprefix() { top=-1; } }; void intoprefix :: push(char ch){ stack[++top]=ch; } char intoprefix :: pop(){ return stack[top--]; } int intoprefix :: prior(char ch) { if(ch==')'||ch=='#') return 1; if(ch=='+'||ch=='-') return 2; if(ch=='*'||ch=='/') return 3; if(ch=='^'||ch=='$') return 4; } void intoprefix :: prefix() { int j=0; push('#'); cout<<"n Enter the valid infix expression:"; cin>>infix; strrev(infix); for(int i=0;infix[i]!='0';i++) { if(isalnum(infix[i])) COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 15
  • 16. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR suffix[j++]=infix[i]; else if(infix[i]==')') push(infix[i]); else if(infix[i]=='(') { while(stack[top]!=')') suffix[j++]=pop(); pop(); } else { while((prior(stack[top])>prior(infix[i]))&&(stack[top]!=')')) suffix[j++]=pop(); push(infix[i]); } } while(stack[top]!='#') suffix[j++]=pop(); suffix[j]='0'; strrev(suffix); cout<<"n The corresponding prefix expression is:"; cout<<suffix; } void main() { intoprefix p; clrscr(); p.prefix(); getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 16
  • 17. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 5c) /* evaluation of posffix expression */ #include <iostream.h> #include <conio.h> #include <ctype.h> #include <math.h> #define MAX 50 class eval { int s[MAX],top; char p[20]; double res; public : eval() { top=-1; } void push(double); double pop(); double result(char, double, double); void suffixeval(); }; void eval :: push(double e) { s[++top]=e; } double eval :: pop() { return s[top--]; } double eval :: result(char p,double op1,double op2) { switch(p) { case '+': return (op2+op1); case '-': return (op2-op1); case '*': return (op2*op1); case '/': return (op2/op1); case '^': return pow(op2,op1); } } void eval :: suffixeval() { cout<<"n Enter a valid postfix expression :"; cin>>p; for(int i=0;p[i]!='0';i++) { COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 17
  • 18. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR if(isdigit(p[i])) push((double)(p[i]-'0')); else { double op1,op2; op1=pop(); op2=pop(); double val=result(p[i],op1,op2); push(val); } } res=s[top]; cout<<"n After Evaluating result is: "<<res; } void main() { eval e; clrscr(); e.suffixeval(); getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 18
  • 19. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 6) /* implementation of deque using doubly linked list */ #include <iostream.h> #include <conio.h> template <class t> class dll { private : struct node { t data; struct node *next; struct node *prev; }*head; public : dll(){ head=NULL; } void create(); void print(); void insert_front(); void insert_rear(); void del_front(); void del_rear(); }; template <class t> void dll <t> :: create() { node *n1,*last,*temp; char ans='y'; do { n1=new node; cout<<"nEnter the data:"; cin>>n1->data; n1->next=NULL; n1->prev=NULL; if(head==NULL) { head=n1; last=n1; } else { last->next=n1; n1->prev=last; last=n1; } cout<<"n nEnter more ?"; ans=getche(); }while(ans=='y'||ans=='Y'); COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 19
  • 20. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR cout<<"n The list is createdn"; getch(); } template <class t> void dll <t> ::print() { node *temp; temp=head; if(temp==NULL) { cout<<"n The list is emptyn"; getch(); return; } else { cout<<"n The list is :"; while(temp!=NULL) { cout<<temp->data<<" "; temp=temp->next; } } getch(); } template <class t> void dll <t> ::insert_rear() { node *temp,*n1; int val,flag=0; cout<<"n Enter the data of the new node to insert"; cin>>val; temp=head; if(temp==NULL) flag=1; else { while(temp->next!=NULL) temp=temp->next; } n1=new node; if(n1==NULL) cout<<"n Unable to allocate memoryn"; n1->data=val; n1->next=NULL; n1->prev=NULL; if(flag==0) { temp->next=n1; n1->prev=temp; } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 20
  • 21. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR else head=n1; cout<<"n Node inserted "; } template <class t> void dll <t> :: insert_front() { node *temp,*n1; int data; cout<<"n Enter the data of the new node to insert"; cin>>data; n1=new node; if(n1==NULL) cout<<"n Unable to allocate memoryn"; n1->data=data; n1->next=NULL; n1->prev=NULL; if(head) { n1->next=head; head->prev=n1; } head=n1; cout<<"n Node inserted "; } template <class t> void dll <t> :: del_front() { node *curr, *temp; curr=head; if(curr==NULL) cout<<"n Node not found"; else { if(head->next==NULL && head->prev==NULL) head=NULL; else { head=curr->next; head->prev=NULL; } } cout<<"n The item deleted"; delete curr; } template <class t> void dll <t> :: del_rear() { node *curr,*temp; curr=head; while(curr->next!=NULL) COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 21
  • 22. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR curr=curr->next; temp=curr->prev; temp->next=NULL; delete curr; cout<<" n The item is deletedn"; } void main() { char ans='y'; int ch; dll <int> d; dll <char> c; do{ cout<<"n" <<"MENU"; cout<<"n n1.Create"; cout<<"n n2.Display"; cout<<"n n3.Insertion by front"; cout<<"n n4.Insertion by rear"; cout<<"n n5.Deletion by front"; cout<<"n n6.Deletion by rear"; cout<<"n Enter your choice:"; cin>>ch; switch(ch) { case 1:d.create(); break; case 2:d.print(); break; case 3:d.print(); d.insert_front(); d.print(); break; case 4:d.insert_rear(); d.print(); break; case 5:d.print(); d.del_front(); d.print(); break; case 6:d.print(); d.del_rear(); d.print(); break; default: cout<<"n Invalid choice"; } cout<<"n Do you want to continue?"; ans=getch(); } while(ans=='y'||ans=='Y'); cout<<"n n Enter the characters in a Queue"<<endl; c.create(); COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 22
  • 23. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR c.print(); getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 23
  • 24. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 7) /* Implementation of Binary search tree for the following operations a) Inserting an element into a binary search tree b) Deleting an element from a binary search tree c) Searching for a key element in a binary search tree */ #include<conio.h> #include<iostream.h> #include<stdlib.h> struct node { int element; node *left,*right; }; typedef struct node *nodeptr; template <class t> class BSTree { public: void insert(t,nodeptr &); void del(t, nodeptr &); int delet(nodeptr &); void search(t,nodeptr &); void display(nodeptr &, int); }; template <class t> void BSTree <t> ::insert( t x,nodeptr &p) { if(p==NULL) { p=new node; p->left=NULL; p->right=NULL; p->element=x; } else { if(x<p->element) insert(x,p->left); else if(x>p->element) insert(x,p->right); else cout<<"n Eelement already exist!"; } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 24
  • 25. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR } template <class t> void BSTree <t> ::del(t x,nodeptr &p) { nodeptr d; if(p==NULL) cout<<"n Element not found"; else if(x<p->element) del(x,p->left); else if(x>p->element) del(x,p->right); else if((p->left==NULL)&&(p->right==NULL)) { d=p; delete d; p=NULL; cout<<"n Element deleted"; } else if(p->left==NULL) { d=p; delete d; p=p->right; cout<<"Element deleted"; } else if(p->right==NULL) { d=p; p=p->left; delete d; cout<<"n Element deleted"; } else p->element=delet(p->right); } template <class t> int BSTree <t>:: delet(nodeptr &p) { int c; if(p->left==NULL) { c=p->element; p=p->right; return c; } else c=delet(p->left); return c; } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 25
  • 26. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR template <class t> void BSTree<t> :: search(t x, nodeptr &p) { if(p==NULL) cout<<"n Element not found"; else { if(x<p->element) search(x,p->left); else if(x>p->element) search(x,p->right); else cout<<"n Element found"; } } template <class t> void BSTree <t>:: display(nodeptr &x,int level) { int i; if(x) { display(x->right,level+1); cout<<"n"; for(i=0;i<level;i++) cout<<" "; cout<<x->element; display(x->left,level+1); } } void main() { BSTree <int>t; clrscr(); nodeptr root=NULL; int item; int ch; do { cout<<"nn MENUn"; cout<<"n 1.Create 2.Display 3.Search 4.Delete 5.Exitn"; cin>>ch; switch(ch) { case 1:while(1) { cout<<"Enter value:Enter -1 to stop:"; cin>>item; if(item==-1) break; COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 26
  • 27. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR t.insert(item,root); } break; case 2: t.display(root,1); break; case 3:cout<<"n Enter element to be inserted:"; cin>>item; t.search(item,root); break; case 4:cout<<"n Enter the element to be deleted:"; cin>>item; t.del(item,root); break; case 5: exit(0); default: cout<<"n Invalid choice"; } getch(); } while (1); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 27
  • 28. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 8) //implementation of circular queue ADT using Array #include<iostream.h> #include<conio.h> #define MAX 5 template <class T> class Cirqueue { T *Cqueue; int front,rear; public: Cirqueue(); void Insertitem(T val); T deleteitem(); void print(); ~Cirqueue(); }; template <class T> Cirqueue<T>::Cirqueue() { Cqueue=new T[MAX]; front=rear=-1; } template <class T> void Cirqueue<T>::Insertitem(T val) { if(rear==-1) { front=rear=0; Cqueue[rear]=val; } else { if(((rear+1)%MAX)!=front) { rear=(rear+1)%MAX; Cqueue[rear]=val; } else cout<<"Queue is FULL!!!"; } } template <class T> T Cirqueue<T>::deleteitem() { if(front==-1) { cout<<"Queue is EMPTY!!!"; return(0); } else COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 28
  • 29. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR { T val=Cqueue[front]; if(front==rear) front=rear=-1; else front=(front+1)%MAX; return val; } } template <class T> void Cirqueue<T>::print() { if(front==-1) { cout<<"Queue is EMPTY!!!"; return; } else { for(int i=front;i<=rear;i++) cout<<Cqueue[i]<<" "; } if(front>rear) { for(int m=front;m<MAX;m++) cout<<Cqueue[m]<<" "; for(int n=0;n<=rear;n++) cout<<Cqueue[n]<<" "; } } template <class T> Cirqueue<T>::~Cirqueue() { delete[]Cqueue; } int main() { clrscr(); Cirqueue <int>obj; int ch,flag=1; while(flag==1) { cout<<"nMENU"; cout<<"n1.Insert"; cout<<"n2.Delete"; cout<<"n3.Print"; cout<<"n4.Exit"; cout<<"nEnter your choice:"; cin>>ch; switch(ch) COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 29
  • 30. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR { case 1: cout<<"nEnter the element to be inserted:"; int val; cin>>val; obj.Insertitem(val); cout<<"Do you want to continue?(Yes=1 or No=0):"; cin>>flag; break; case 2: cout<<"nDeleted item is:"; cout<<obj.deleteitem(); cout<<"nDo you want to continue?(Yes=1 or No=0):"; cin>>flag; break; case 3: cout<<"nElements in the queue are:"; obj.print(); cout<<"nDo you want to continue?(Yes=1 or No=0):"; cin>>flag; break; case 4: flag=0; break; default: cout<<"Enter the right choice!!!"; } } return 0; getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 30
  • 31. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 9) /*Using non-recursive functions to traversing the given binary tree in a) Preorder b) Inorder c) Postorder */ #include<iostream.h> #include<conio.h> #include<stdlib.h> int top=-1,top1=-1,ch; template<class t> class bst { struct node /* definig structure for node */ { public: t data; node *left,*right; }*root,*a[20],*b[20]; public: bst() { root=NULL; } struct node *insert(node *r,t val) { if(r==NULL) /* insertion for first element */ { r=new node; r->data=val; r->left=NULL; r->right=NULL; } else { if(r->data<val) r->right=insert(r->right,val); else r->left=insert(r->left,val); } return(r); } struct node *deletion(node *r,t val) { node *data,*d,*x,*p,*i; int f=0; x=r; p=NULL; while(x!=NULL) { if(x->data==val) /* search for element to delete */ { d=x; f=1; COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 31
  • 32. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR break; } else if(val<x->data) { p=x; x=x->left; } else { p=x; x=x->right; } } if(f==0) cout<<"n element not found"; else /* deletion of element */ { if(d->left!=NULL && d->right!=NULL) { p=d; i=d->left; while(i->right!=NULL) { p=i; i=i->right; } d->data=i->data; d=i; } if(d->left!=NULL && d->right==NULL) { if(p==NULL) r=d->left; else if(d==p->left) p->left=d->left; else p->right=d->right; } if(d->left==NULL && d->right!=NULL) { if(p==NULL) r=NULL; else if(d==p->left) p->left==NULL; else p->right=NULL; } cout<<"n elements deleted "; return(r); } } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 32
  • 33. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR void inorder_non_rec(node *r) /* inorder traversal */ { node *l; l=r; do { while(l!=NULL) { push(l); l=l->left; } while(top>-1) { l=pop(); cout<<" "<<l->data; if(l->right!=NULL) { l=l->right; break; } else l=NULL; } }while(l!=NULL); } void preorder_non_rec(node *r) /* for pre order traversal */ { node *l; l=r; do { cout<<" "<<l->data; if(l->right!=NULL) push(l->right); l=l->left; if(l==NULL && top>-1) l=pop(); }while(l!=NULL); } void postorder_non_rec(node *r) /* for post order traversal */ { node *l; l=r; do { while(l!=NULL) { push(l); if(l->right!=NULL) { push(l->right); COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 33
  • 34. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR b[++top1]=l->right; } l=l->left; } do { l=pop(); if(l!=b[top1]) cout<<" "<<l->data; else { top1=top1-1; break; } }while(top>-1); }while(l!=NULL && top>-1); } void push(node *r) /* function for pushing */ { top=top+1; a[top]=r; } struct node *pop() /* function for popping */ { return a[top--]; } int function() /* function for calling operations */ { t element; cout<<"nmenu n 1 insert 2 inorder 3 preorder 4 post order 5 delete 6 exitn"; do { cout<<"n enter ur choice "; cin>>ch; switch(ch) { case 1:cout<<"n enter element to be inserted:"; cin>>element; root=insert(root,element); break; case 2:cout<<"n rec inorder traversal:"; inorder_non_rec(root); break; case 3:cout<<"n rec preorder traversal :"; preorder_non_rec(root); break; case 4:cout<<"n rec post order traversal:"; postorder_non_rec(root); break; case 5:cout<<"n enter element to be deleted :"; cin>>element; COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 34
  • 35. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR deletion(root,element); break; case 6:return(0); } }while(ch<6); } }; void main() { bst<int>b1; bst<float>b2; bst<char>b3; clrscr(); while(1) { cout<<"n data type n 1 int 2 float 3 char 4 exit n"; cout<<"enter data type n"; cin>>ch; switch(ch) { case 1:b1.function(); break; case 2:b2.function(); break; case 3:b3.function(); break; case 4:exit(1); } } getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 35
  • 36. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 10 a) // Program for the implementation of Breadth First Search of graph #include <iostream.h> #include <conio.h> #include <stdlib.h> #define max 10 class que { private : int arr[max]; int rear,front; public: void insert(int); int del(); int isqempty(); int isqful(); que() { front=rear=-1; } }; void que::insert(int item) { if(isqful()) cout<<"n Queue is full"; else { rear++; arr[rear]=item; if(front==-1) front=0; } } int que::del() { int item; if(isqempty()) { cout<<"nqueue is empty"; return NULL; } else { item=arr[front]; if(front==rear) front=rear=-1; else front++; return item; COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 36
  • 37. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR } } int que:: isqempty() { if(front==-1) return 1; else return 0; } int que::isqful() { if(rear==max-1) return 1; else return 0; } que q; class graph { private : int adj[max][max]; int vst[max]; int n; public : graph() { n=0; } void buildadjm(); void bfs(int x); void menu(); }; void graph::buildadjm() { int i,j; cout<<"n Enter the graph in the matrix form:n"; for(i=1;i<=n;i++) { cout<<"nEnter "<<i<<"row"; for(j=1;j<=n;j++) cin>>adj[i][j]; } } void graph::bfs(int x) { int j,k; if(vst[x]==0) { COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 37
  • 38. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR vst[x]=1; cout<<" "<<x; } for(;;) { for (j=1;j<=n ;j++ ) { if((adj[x][j]==1)&&(vst[j]==0)) { q.insert(j); vst[j]=1; } if(q.isqempty()) return; else { k=q.del(); cout<<" "<<k; } } } } void graph::menu() { int i; cout<<"nn Enter number of nodes:"; cin>>n; buildadjm(); for(i=1;i<=n;i++) vst[i]=0; cout<<"n The bfs traversal is as follows:n"; for(i=1;i<=n;i++) if(vst[i]==0) bfs(i); getch(); } void main() { clrscr(); graph g; g.menu(); getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 38
  • 39. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 10 b) // Program for the implementation of Depth First Search of graph #include <iostream.h> #include <conio.h> #include <stdlib.h> #define max 10 class graph { private: int adj[max][max]; int vst[max]; int n; public : graph() { n=0; } void buildadjm(); void dfs(int x); void menu(); }; void graph::buildadjm() { int i,j; cout<<"n Enter the graph in the matrix form:n"; for(i=1;i<=n;i++) { cout<<"nEnter "<<i<<"Row :"; for(j=1;j<=n;j++) cin>>adj[i][j]; } } void graph::dfs(int x) { int j; vst[x]=1; cout<<" "<<x; for(j=1;j<=n;j++) { if((adj[x][j]==1)&&(vst[j]==0)) dfs(j); } } void graph::menu() { int i; cout<<"nn Enter number of nodes:"; cin>>n; buildadjm(); for(i=1;i<=n;i++) COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 39
  • 40. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR vst[i]=0; cout<<"n The dfs traversal is as follows:n"; for(i=1;i<=n;i++) if(vst[i]==0) dfs(i); getch(); } void main() { clrscr(); graph g; g.menu(); getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 40
  • 41. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 11 a) // Program for the implementation of Quick sort #include<iostream.h> #include<stdlib.h> #include<conio.h> void quick(int,int); int a[100]; void main() { int i,n,lo,hi; clrscr(); cout<<"enter no.of elements"; cin>>n; cout<<"enter elements"; for(i=0;i<n;i++) cin>>a[i]; /* reading elements */ lo=0; hi=n-1; quick(lo,hi); cout<<"sorted elements are:n"; for(i=0;i<n;i++) cout<<a[i]<<"t"; getch(); } void quick(int l,int h) /* using quick sort */ { int i,j,pivot,pin,t; i=l+1; j=h; pivot=a[l]; pin=l; if(l<h) { do { while(a[i]<pivot&&i<=h) i++; while(a[j]>pivot&&j>=l) j--; if(i<j) { /* swapping */ t=a[j]; a[j]=a[i]; a[i]=t; } }while(i<j); t=a[pin]; a[pin]=a[j]; a[j]=t; quick(l,j-1); quick(j+1,h); COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 41
  • 42. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR } } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 42
  • 43. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 11 b) // Program for the implementation of Merge sort #include<iostream.h> #include<conio.h> void mergesort(int,int); void merge(int,int,int); int a[10],b[10]; void main() { int i,n,lo,hl; clrscr(); cout<<"enetr no.of elemnets :"; cin>>n; cout<<"enetr elements into array"; for(i=0;i<n;i++) cin>>a[i]; /*reading elements */ lo=0; hl=n-1; mergesort(lo,hl); cout<<"sorted elements are:n"; for(i=0;i<n;i++) cout<<"t"<<a[i]; getch(); } void mergesort(int l,int h) { int mid; if(l<h) { mid=(l+h)/2; /* breaking array into two parts */ mergesort(l,mid); mergesort(mid+1,h); merge(l,mid,h); } } void merge(int l,int mid,int h) { int i,j,k,hl; i=l; j=mid+1; k=l; while(i<=mid&&j<=h) { if(a[i]<a[j]) { b[k]=a[i]; i++; } else { b[k]=a[j]; COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 43
  • 44. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR j++; } k++; } if(i>mid) /* finding largest element from two parts */ { for(hl=j;hl<=h;hl++) b[k++]=a[hl]; } else if(j>h) { for(hl=i;hl<=mid;hl++) b[k++]=a[hl]; } for(k=l;k<=h;k++) a[k]=b[k]; } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 44
  • 45. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 11 c) // Program for the implementation of Heap sort #include<iostream.h> #include<conio.h> int x[10],i,n; void heap(int); void maxheap(int); void main() { clrscr(); cout<<"enter no of elements"; cin>>n; cout<<"enetr the elements"; for(i=1;i<=n;i++) cin>>x[i]; /* reading elements */ heap(n); cout<<"sorted elements are:"; for(i=1;i<=n;i++) cout<<x[i]<<"t"; } void heap(int n) { int t; while(n>1) { maxheap(n); /* calling max heap */ t=x[1]; x[1]=x[n]; x[n]=t; n=n-1; } } void maxheap(int n) { int i,t,j; for(i=2;i<=n;i++) { t=x[i]; j=i; while(x[j/2]<t&&j>1) { x[j]=x[j/2]; j=j/2; } x[j]=t; } } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 45
  • 46. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 12 a) // Program to implement linear search in both recursive and non-recursive #include <iostream.h> #include <conio.h> #include <stdlib.h> template <class t> class search { t a[20],key; int n; void getdata(); int linsearch(t); public: void menu(); }; template <class t> void search<t>::getdata() { cout<<"n Enter the size of array:"; cin>>n; cout<<"n Enter array Elementsn"; for(int i=1;i<=n;i++) cin>>a[i]; } template <class t> int search<t>::linsearch(t key) { for(int i=1;i<=n;i++) { if(a[i]==key) return i; } return -1; } template <class t> void search<t> :: menu() { int pos,ch; getdata(); cout<<"n Enter the key value:"; cin>>key; pos=linsearch(key); if(pos!=-1) cout<<"n The key"<< key <<" is found at postion:"<<pos; else cout<<"n Serach is unsuccessful"; getch(); COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 46
  • 47. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR } void main() { clrscr(); search <int> s1; search <char> s2; do { char ch; cout<<"n MENU n"; cout<<"n 1.Integer 2.Character 3.Exit"; cout<<"n Enter your choice:"; cin>>ch; switch(ch) { case '1':s1.menu(); break; case '2': s2.menu(); break; case '3': exit(0); default: cout<<"n Invalid choice"; } getch(); } while (1); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 47
  • 48. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 12 b) // Program to implement Binary search in both recursive and non-recursive #include <iostream.h> #include <conio.h> #include <stdlib.h> template <class t> class search { t a[20],key; int n; void getdata(); void showdata(); void sort(); int binsearch(t); public: void menu(); }; template <class t> void search <t> ::getdata() { cout<<"n Enter size of array:"; cin>>n; cout<<"n Enter array elementsn"; for(int i=0;i<n;i++) cin>>a[i]; } template <class t> void search <t> ::showdata() { for(int i=0;i<n;i++) cout<<" "<<a[i]; } template <class t> void search <t> ::sort() { for (int i=0;i<n ;i++ ) { for(int j=i+1;j<n;j++) { if(a[i]>a[j]) { t temp=a[i]; a[i]=a[j]; a[j]=temp; } } } } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 48
  • 49. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR template <class t> int search <t> ::binsearch(t key) { int low,high,mid; low=0; high=n-1; while(low<=high) { mid=(low+high)/2; if(a[mid]==key) return mid; else if(key>a[mid]) low=mid+1; else high=mid-1; } return -1; } template <class t> void search <t> ::menu() { int pos,ch; getdata(); cout<<"n Before sorting"; showdata(); sort(); cout<<"n After sorting"; showdata(); cout<<"n Enter key value:"; cin>>key; pos=binsearch(key); if(pos!=-1) cout<<"The key"<<key<<" is found at position "<< pos; else cout<<"n Search is unsuccessful"; } void main() { clrscr(); search <int> s1; search <char> s2; do { char ch; cout<<"n MENUn"; cout<<" 1.Integer 2.Character 3.Exit"; cout<<"n Enter your choice:"; cin>>ch; switch(ch) { COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 49
  • 50. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR case '1':s1.menu(); break; case '2':s2.menu(); break; case '3':exit(0); default: cout<<"n Invalid choice!"; getch(); } }while(1); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 50
  • 51. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 13) // Program to implement AVL tree to for the following operations a) Insertion into AVL tree b) Deletion from an AVL tree #include <iostream.h> #include <conio.h> #define FALSE 0 #define TRUE 0 struct node { int data; node *left; node *right; int height; }; typedef node *nodeptr; template <class t> class avl { public : void insert(t,nodeptr &); void delet(t,nodeptr &); void show(nodeptr &,int); int avlheight(nodeptr); int deletmax(nodeptr &); nodeptr sinrotleft(nodeptr &); nodeptr sinrotright(nodeptr &); nodeptr dourotleft(nodeptr &); nodeptr dourotright(nodeptr &); int max(t,t); }; template <class t> void avl <t> :: insert (t x, nodeptr &p) { if(p== NULL) { p=new node; p->data=x; p->left=NULL; p->right=NULL; p->height=0; } else { if(x<p->data) { insert(x,p->left); if(avlheight(p->left)-avlheight(p->right) ==2) { if(x<p->left->data) COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 51
  • 52. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR p=sinrotleft(p); else p=dourotleft(p); } } else { if(x>p->data) { insert(x,p->right); if((avlheight(p->right)-avlheight(p->left) == 2) { if(x<p->right->data) p=sinrotleft(p); else p=dourotleft(p); } } else { cout<<"n Element already exist"; return; } } int m,n,d; m=avlheight(p->left); n=avlheight(p->right); d=max(m,n); p->height=d+1; } template <class t> void avl <t> :: show(nodeptr &x,t level) { int i; if(x) { show(x->right,level+1); cout<<"n"; for(i=0;i<level;i++) cout<<" "; cout<<" "<<x->data; show(x->left,level+1); } } template <class t> nodeptr avl <t> :: dourotleft(nodeptr &p1) COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 52
  • 53. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR { p1->left=sinrotright(p1->left); return sinrotleft(p1); } template <class t> nodeptr avl <t> :: dourotright(nodeptr &p1) { p1->right=sinrotright(p1->right); return sinrotright(p1); } template <class t> nodeptr avl <t> :: sinrotright(nodeptr &p1) { nodeptr p2; p2=p1->right; p1->right=p2->left; p2->left=p1; p1->height=max(avlheight(p1->left),avlheight(p1->right)); p2->height=max(p1->height,avlheight(p2->right)+1); return p2; } template <class t> nodeptr avl <t> :: sinrotleft(nodeptr &p1) { nodeptr p2; p2=p1->left; p1->left=p2->right; p2->right=p1; p1->height=max(avlheight(p1->left),avlheight(p1->right)); p2->height=max(avlheight(p2->left),p1->height+1); return p2; } template <class t> void avl <t> :: delet(t x,nodeptr &p) { nodeptr d; if(p==NULL) cout<<"n Element not found!"; else if(x<p->data) { delet(x,p->left); if((avlheight(p->right)-avlheight(p->left))==2) { int u,pu,gu; gu=p->data; pu=p->right->data; if(p->right->right==NULL) u=p->right->left->data; else u=p->right->right->data; COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 53
  • 54. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR if(gu<pu && pu<u) p=sinrotright(p); else p=dourotright(p); } } else if(x>p->data) { delet(x,p->right); if((avlheight(p->left)-avlheight(p->right))==2) { int u,pu,gu; gu=p->data; pu=p->left->data; if(p->right->right==NULL) u=p->left->right->data; else u=p->left->left->data; if(gu>pu && pu>u) p=sinrotright(p); else p=dourotright(p); } } else if((p->left==NULL) && (p->right==NULL)) { d=p; delete d; p=NULL; cout<<"n Element deleted!"; return; } else if(p->left==NULL) { d=p; delete d; p=p->right; cout<<"n Element deleted"; return; } else if(p->right==NULL) { d=p; delete d; p=p->left; cout<<"n Element deleted"; return; } else { COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 54
  • 55. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR p->data=deletmax(p->left); int m,n,d1; m=avlheight(p->left); n=avlheight(p->right); d1=max(m,n); p->height=d1+1; } } template <class t> int avl <t> :: avlheight(nodeptr p) { int t; if(p==NULL) return 0; else { t=p->height; return t; } } template <class t> int avl <t> :: deletmax(nodeptr &p) { int c; if(p->right==NULL) { c=p->data; p=p->left; return c; } else { c=deletmax(p->right); return c; } } template <class t> int avl <t> :: max(t v1,t v2) { return ((v1>v2)?v1:v2); } void main() { clrscr(); nodeptr root=NULL; int element; avl <int> a1; while(1) COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 55
  • 56. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR { cout<<"nEnter elements to insert(Enter -1 to exit) :"; cin>>element; if(element==-1) break; a1.insert(element,root); } cout<<"n The tree after insertion:"; a1.show(root,1); cout<<"n Enter the element to be deleted:"; cin>>element; cout<<"n the tree after deletion :n"; a1.show(root,1); cout<<"n"; getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 56
  • 57. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR Program 14) // Program to implement Kruskal’s algorithm to generate a minimum cost spanning tree #include <iostream.h> #include <conio.h> #define INFINITY 999 template <class t> class kruskal { private: typedef struct Graph { int v1; int v2; t cost; }GR; GR G[20]; public : int tot_edges,tot_nodes; void create(); void spanning_tree(); void get_input(); int minimum(int); }; int Find(int v2,int parent[]) { while(parent[v2]!=v2) { v2=parent[v2]; } return v2; } void Union(int i,int j,int parent[]) { if(i<j) parent[j]=i; else parent[i]=j; } template <class t> void kruskal <t>::get_input() { cout<<"n Enter Total number of nodes: "; cin>>tot_nodes; cout<<"n Enter Total number of edges: "; cin>>tot_edges; } template <class t> COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 57
  • 58. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR void kruskal <t>::create() { for(int k=0;k<tot_edges;k++) { cout<<"n Enter Edge in (v1, v2) from"; cin>>G[k].v1>>G[k].v2; cout<<"n Enter Corresponding cost "; cin>>G[k].cost; } } template <class t> int kruskal <t>::minimum(int n) { int i,small,pos; small=INFINITY; pos=-1; for(i=0;i<n;i++) { if(G[i].cost<small) { small=G[i].cost; pos=i; } } return pos; } template <class t> void kruskal <t>::spanning_tree() { int count,k,v1,v2,i,j,tree[10][10],pos,parent[10]; t sum; count=0; k=0; sum=0; for(i=0;i<tot_nodes;i++) parent[i]=i; while(count!=tot_nodes-1) { pos=minimum(tot_edges); if(pos==-1) break; v1=G[pos].v1; v2=G[pos].v2; i=Find(v1,parent); j=Find(v2,parent); if(i!=j) { tree[k][0]=v1; tree[k][1]=v2; k++; count++; COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 58
  • 59. Y.S.R ENGINEERING COLLEGE OF YOGIVEMANA UNIVERSITY::PRODDATUR sum+=G[pos].cost; Union(i,j,parent); } G[pos].cost=INFINITY; } if(count==tot_nodes-1) { cout<<"n Spanning tree is..."<<endl; cout<<"n _____________"<<endl; for(i=0;i<tot_nodes-1;i++) { cout<<"["<<tree[i][0]; cout<<" - "; cout<<tree[i][1]<<"]"<<endl; } cout<<"n ___________"<<endl; cout<<"Cost of spanning tree is = "<<sum<<endl; } else { cout<<"There is no spanning Tree"<<endl; } } void main() { kruskal <int> obj; clrscr(); cout<<"n t Graph creation "; obj.get_input(); obj.create(); obj.spanning_tree(); getch(); } COMPUTER SCIENCE AND ENGINEERING(2012-13) Page 59