.................................................................................................
NB: To rectify problems associated with html coding white spaces are provided in statements especially after "<<" and "<" symbols... Please edit those before running, otherwise you may come across errors...
Email your suggestions and feedbacks to
< btechitians@gmail.com >
Enjoy programming
.................................................................................................
Aim: Write a C++ program to find the sparse of a matrix
PROGRAM
#include”iostream.h”
#include”conio.h”
void main()
{
int a[50][50],sp[50][50],i,j,k=0,m,n;
clrscr();
cout<<"\n Enter the order of matrix: ";
cin>>m>>n;
cout<<"\n Enter the elements: ";
for(i=0;i< m;i++)
{
for(j=0;j< n;j++)
{
cin>>a[i][j];
if(a[i][j]!=0)
{
k++;
sp[k][0]=i;
sp[k][1]=j;
sp[k][2]=a[i][j];
}
}
}
sp[0][0]=m;
sp[0][1]=n;
sp[0][2]=k;
cout<<"\n The sparse matrix is:\n";
for(i=0;i<=k;i++)
{
for(j=0;j<3;j++)
cout<< sp[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of matrix: 3 3
Enter the elements:
0 1 0
2 0 0
0 0 3
The sparse matrix is:
3 3 3
0 1 1
1 0 2
2 2 3
Aim: Write a C++ program to find the transpose of a matrix using the given sparse matrix
PROGRAM
#include”iostream.h”
#include”conio.h”
void main()
{
int a[50][50],sp[50][50],i,j,k=0,m,n,tsp[50][50],p=0;
clrscr();
cout<<"\n Enter the order of matrix: ";
cin>>m>>n;
cout<<"\n Enter the elements: ";
for(i=0;i< m;i++)
{
for(j=0;j< n;j++)
{
cin>>a[i][j];
if(a[i][j]!=0)
{
k++;
sp[k][0]=i;
sp[k][1]=j;
sp[k][2]=a[i][j];
}
}
}
sp[0][0]=m;
sp[0][1]=n;
sp[0][2]=k;
cout<<"\n The sparse matrix is:\n";
for(i=0;i<=k;i++)
{
for(j=0;j<3;j++)
cout<< sp[i][j]<<" ";
cout<<"\n";
}
p=0;
for(j=0;j< n;j++)
{
for(i=1;i<=k;i++)
{
if(sp[i][1]==j)
{
p++;
tsp[p][0]=sp[i][1];
tsp[p][1]=sp[i][0];
tsp[p][2]=sp[i][2];
}
}
}
tsp[0][0]=sp[0][1];
tsp[0][1]=sp[0][0];
tsp[0][2]=p;
cout<<"\n Transpose of sparse \n";
for(i=0;i<=p;i++)
{
for(j=0;j<3;j++)
cout<< tsp[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of matrix: 3 3
Enter the elements:
1 0 0
0 0 2
0 3 0
The sparse matrix is:
3 3 3
0 0 1
1 2 2
2 1 3
Transpose of sparse
3 3 3
0 0 1
1 2 3
2 1 2
Aim: Write a C++ program to find transpose of a matrix using fast transpose method
PROGRAM
#include”iostream.h”
#include”conio.h”
void main()
{
int a[50][50],sp[50][50],i,j,k=0,m,n,t,tsp[50][50];
int start[50],size[50];
clrscr();
cout<<"\n Enter the order of matrix: ";
cin>>m>>n;
cout<<"\n Enter the elements: ";
for(i=0;i< m;i++)
{
for(j=0;j< n;j++)
{
cin>>a[i][j];
if(a[i][j]!=0)
{
k++;
sp[k][0]=i;
sp[k][1]=j;
sp[k][2]=a[i][j];
}
}
}
sp[0][0]=m;
sp[0][1]=n;
sp[0][2]=k;
cout<<"\n The sparse matrix is:\n";
for(i=0;i<=k;i++)
{
for(j=0;j<3;j++)
cout<< sp[i][j]<<" ";
cout<<"\n";
}
for(i=0;i< n;i++)
size[i]=0;
for(i=1;i<=k;i++)
{
t=sp[i][1];
size[t]++;
}
start[0]=1;
for(i=1;i< n;i++)
start[i]=start[i-1]+size[i-1];
for(i=1;i<=k;i++)
{
j=sp[i][1];
t=start[j];
tsp[t][0]=sp[i][1];
tsp[t][1]=sp[i][0];
tsp[t][2]=sp[i][2];
start[j]++;
}
tsp[0][0]=sp[0][1];
tsp[0][1]=sp[0][0];
tsp[0][2]=sp[0][2];
cout<<"\n Transpose \n";
for(i=0;i<=k;i++)
{
for(j=0;j<3;j++)
cout<< tsp[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of matrix: 3 3
Enter the elements:
0 1 0
2 0 0
0 0 5
The sparse matrix is:
3 3 3
0 1 1
1 0 2
2 2 5
Transpose
3 3 3
0 1 2
1 0 1
2 2 5
Aim: Write a C++ program to convert the given sparse to original matrix
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
void main()
{
int sp[50][50],a[40][40],k,i,j,m,n,r,c;
clrscr();
cout<<"\n Enter the order of sparse matrix: ";
cin>>n;
cout<<"\n Enter the sparse matrix: ";
for(i=0;i< n;i++)
for(j=0;j<3;j++)
cin>>sp[i][j];
if(sp[0][2]!=(n-1))
{
cout<<"\n Error ";
getch();
exit(0);
}
for(i=0;i<40;i++)
for(j=0;j<40;j++)
a[i][j]=0;
m=sp[0][0];
n=sp[0][1];
k=sp[0][2];
for(i=1;i<=k;i++)
{
r=sp[i][0];
c=sp[i][1];
a[r][c]=sp[i][2];
}
cout<<"\n The original matrix is: \n";
for(i=0;i< m;i++)
{
for(j=0;j< n;j++)
cout<< a[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of sparse matrix: 4
Enter the sparse matrix:
3 3 3
0 1 2
1 0 1
2 1 3
The original matrix is:
0 2 0
1 0 0
0 3 0
Aim: Write a C++ program to perform sparse matrix addition
PROGRAM
#include”iostream.h”
#include”conio.h”
void main()
{
int num,sp1[50][50],i,j,k1=0,k2=0,k=0,m1,n1,m2,n2,sp2[50][50],sp[50][50];
int m,n;
clrscr();
cout<<"\n Enter the order of matrix1: ";
cin>>m1>>n1;
cout<<"\n Enter the elements: ";
for(i=0;i< m1;i++)
{
for(j=0;j< n1;j++)
{
cin>>num;
if(num!=0)
{
k1++;
sp1[k1][0]=i;
sp1[k1][1]=j;
sp1[k1][2]=num;
}
}
}
sp1[0][0]=m1;
sp1[0][1]=n1;
sp1[0][2]=k1;
cout<<"\n Enter the order of matrix2: ";
cin>>m2>>n2;
cout<<"\n Enter the elements: ";
for(i=0;i< m2;i++)
{
for(j=0;j< n2;j++)
{
cin>>num;
if(num!=0)
{
k2++;
sp2[k2][0]=i;
sp2[k2][1]=j;
sp2[k2][2]=num;
}
}
}
sp2[0][0]=m2;
sp2[0][1]=n2;
sp2[0][2]=k2;
i=1;
j=1;
k=0;
while(i<=k1&&j<=k2)
{
if(sp1[i][0]==sp2[j][0])
{
if(sp1[i][1]< sp2[j][1])
{
k++;
sp[k][0]=sp1[i][0];
sp[k][1]=sp1[i][1];
sp[k][2]=sp1[i][2];
i++;
}
else if(sp1[i][1]>sp2[j][1])
{
k++;
sp[k][0]=sp2[j][0];
sp[k][1]=sp2[j][1];
sp[k][2]=sp2[j][2];
j++;
}
else
{
k++;
sp[k][0]=sp2[j][0];
sp[k][1]=sp2[j][1];
sp[k][2]=sp2[j][2]+sp1[i][2];
j++;i++;
}
}
else if(sp1[i][0]< sp2[j][0])
{
k++;
sp[k][0]=sp1[i][0];
sp[k][1]=sp1[i][1];
sp[k][2]=sp1[i][2];
i++;
}
else if(sp1[i][0]>sp2[j][0])
{
k++;
sp[k][0]=sp2[j][0];
sp[k][1]=sp2[j][1];
sp[k][2]=sp2[j][2];
j++;
}
}
while(i<=k1)
{
k++;
sp[k][0]=sp1[i][0];
sp[k][1]=sp1[i][1];
sp[k][2]=sp1[i][2];
i++;
}
while(j<=k2)
{
k++;
sp[k][0]=sp2[j][0];
sp[k][1]=sp2[j][1];
sp[k][2]=sp2[j][2];
j++;
}
m=((m1>m2)?m1:m2);
n=((n1>n2)?n1:n2);
sp[0][0]=m;
sp[0][1]=n;
sp[0][2]=k;
cout<<"\n The sparse of sum matrix is:\n";
for(i=0;i<=k;i++)
{
for(j=0;j<3;j++)
cout<< sp[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of matrix1: 3 3
Enter the elements:
1 0 0
0 5 0
0 0 6
Enter the order of matrix2: 3 3
Enter the elements:
0 5 0
0 6 0
0 0 3
The sparse of sum matrix is:
3 3 4
0 0 1
0 1 5
1 1 11
2 2 9
Aim: Write a C++ program to perform sparse multiplication
PROGRAM
#include”iostream.h”
#include”conio.h”
#include"process.h"
void main()
{
int num,sp1[50][50],mul[50][50],i,j,k1=0,k2=0,k=0,m1,n1,m2,n2,sp2[50][50],sp[50][50];
int m,n,t;
clrscr();
cout<<"\n Enter the order of matrix1: ";
cin>>m1>>n1;
cout<<"\n Enter the elements: ";
for(i=0;i< m1;i++)
{
for(j=0;j< n1;j++)
{
cin>>num;
if(num!=0)
{
k1++;
sp1[k1][0]=i;
sp1[k1][1]=j;
sp1[k1][2]=num;
}
}
}
sp1[0][0]=m1;
sp1[0][1]=n1;
sp1[0][2]=k1;
cout<<"\n Enter the order of matrix2: ";
cin>>m2>>n2;
cout<<"\n Enter the elements: ";
for(i=0;i< m2;i++)
{
for(j=0;j< n2;j++)
{
cin>>num;
if(num!=0)
{
k2++;
sp2[k2][0]=i;
sp2[k2][1]=j;
sp2[k2][2]=num;
}
}
}
sp2[0][0]=m2;
sp2[0][1]=n2;
sp2[0][2]=k2;
if(n1!=m2)
{
cout<<"\n Error ";
getch();
exit(0);
}
k=0;
for(i=1;i<=k1;i++)
{
for(j=1;j<=k2;j++)
{
if(sp1[i][1]==sp2[j][0])
{
k++;
sp[k][0]=sp1[i][0];
sp[k][1]=sp2[j][1];
sp[k][2]=sp1[i][2]*sp2[j][2];
}
}
}
sp[0][2]=k;
sp[0][0]=m1;
sp[0][1]=n2;
t=0;
for(i=0;i< sp[0][0];i++)
{
for(j=0;j< sp[0][1];j++)
{
for(k1=1;k1<=sp[0][2];k1++)
{
if(sp[k1][0]==i&&sp[k1][1]==j)
{
t++;
mul[t][0]=sp[k1][0];
mul[t][1]=sp[k1][1];
mul[t][2]=sp[k1][2];
}
}
}
}
mul[0][2]=k;
mul[0][0]=m1;
mul[0][1]=n2;
cout<<"\n The sparse of product matrix is:\n";
for(i=0;i<=t;i++)
{
for(j=0;j<3;j++)
cout<< mul[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of matrix1: 3 3
Enter the elements:
2 0 9
0 1 0
0 0 2
Enter the order of matrix2: 3 3
Enter the elements:
0 0 3
1 0 1
2 1 0
The sparse of product matrix is:
3 3 7
0 0 18
0 1 9
0 2 6
1 0 1
1 2 1
2 0 4
2 1 2
Aim: Write a C++ program to convert an infix expression to postfix and evaluate
PROGRAM
#include"iostream.h"
#include"conio.h"
#include"stdio.h"
#include"ctype.h"
#include"string.h"
#include"process.h"
#include"math.h"
int top=-1;
int stack[50];
int p;
void evaluate(char [],int);
void display(char a[],int n)
{
int i;
for(i=0;i<=n;i++)
{
cout<< a[i];
}
cout<<"\n";
}
void inpst(char q[])
{
char stk[50],tp[50],op,ot;
int s=-1,p=-1,j,k,l,h,flg1,flg2;
char pcdn[6]={'-','+','/','*','^','\0'};
int pval[5]={1,1,2,2,3};
for(int i=0;q[i]!='\0';i++)
{
flg1=flg2=-1;
if(isalpha(q[i]))
{
p++;
tp[p]=q[i];
}
else if(q[i]=='(')
{
s++;
stk[s]=q[i];
}
else if(q[i]==')')
{
for(j=s;j>=0;j--)
{
if(stk[s]=='(')
break;
if(stk[j]!='(')
{
p++;
tp[p]=stk[j];
s--;
}
}
s--;
}
else
{
op=q[i];
flg1=-1;
/* to find precedence value */
for(h=0;pcdn[h]!='\0';h++)
{
if(op==pcdn[h])
{
flg1=pval[h];
break;
}
}
/* check for higher precedence operator */
for(k=s;k>=0;k--)
{
flg2=-1;
ot=stk[k];
for(h=0;pcdn[h]!='\0';h++)
{
if(ot==pcdn[h])
{
flg2=pval[h];
break;
}
}
if(flg2>flg1)
{
p++;
tp[p]=ot;
for(l=k;l {
stk[k]=stk[k+1];
}
s--;
}
}
s++;
stk[s]=op;
}
}
while(s>=0)
{
p++;
tp[p]=stk[s];
s--;
}
cout<<"\n The post fix expression is: ";
display(tp,p);
evaluate(tp,p);
}
int result(int a,int b,char op)
{
int c=0;
switch(op)
{
case '+': c=a+b; break;
case '-': c=a-b; break;
case '*': c=a*b; break;
case '/': if(b!=0)
c=a/b;
else
{
cout<<"\n Error: ";
getch();
exit(0);
}
break;
case '^':c=(int)pow(a,b); break;
case '%':c=a%b; break;
}
return c;
}
void push(int item)
{
stack[++top]=item;
}
int pop()
{
int s;
if(top>=0)
{
s=stack[top];
top--;
return s;
}
else
return 0;
}
void evaluate(char post[],int p)
{
int a,b,v=0,q;
top=-1;
for(int i=0;i<=p;i++)
{
if(isalpha(post[i]))
{
cout<<"\n Enter value for "<< post[i]<<": ";
cin>>q;
push(q);
continue;
}
else
{
a=pop();
b=pop();
v=result(a,b,post[i]);
push(v);
}
a=b=0;
}
}
void main()
{
char q[50];
clrscr();
cout<<"\n Enter the infix expression: ";
gets(q);
inpst(q);
cout<<"\n Value of expression "<< stack[top];
getch();
}
OUTPUT
Enter the infix expression: a*b+c*d
The post fix expression is: ab*cd*+
Enter value for a: 2
Enter value for b: 3
Enter value for c: 4
Enter value for d: 5
Value of expression 26
Aim: Write a C++ program to implement stack operations
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
int stk[50],top=-1,i,j,max,num,ch;
void push()
{
top++;
cout<<"\n Enter the item: ";
cin>>num;
stk[top]=num;
}
void pop()
{
cout<<"\n Popped "<< stk[top];
top--;
}
void display()
{
cout<<"\n ---------------------\n";
cout<<"TOP>> ";
for(i=top;i>=0;i--)
cout<< stk[i]<<" ";
cout<<"\n ---------------------";
}
void main()
{
clrscr();
cout<<"\n Enter the limit: ";
cin>>max;
do
{
cout<<"\n\n STACK\n";
cout<<"\n1.Push\n2.Pop\n3.Display\n4.Exit";
cout<<"\n Enter the choice: ";
cin>>ch;
switch(ch)
{
case 1:if(top>=max-1)
{
cout<<"\n Stack full: ";
continue;
}
push();
break;
case 2:if(top==-1)
{
cout<<"\n Stack empty: ";
continue;
}
pop();
break;
case 3:display();
break;
case 4:cout<<".......Thanking you.......";
getch();
exit(0);
default:cout<<"\n INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
Enter the limit: 3
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 1
Enter the item: 23
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 1
Enter the item: 96
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 3
---------------------
TOP>> 96 56 23
---------------------
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 2
Popped 96
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 3
---------------------
TOP>> 56 23
---------------------
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 4
.......Thanking you.......
Aim: Write a C++ program to reverse a string using stack
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
#include"string.h"
void revstk(char str[])
{
char stk[50];
int top,i;
for(i=0;str[i]!='\0';i++)
stk[i]=str[i];
top=--i;
cout<<"\n Reversed string: ";
for(i=top;i>=0;i--)
cout<< stk[i];
return;
}
void main()
{
char str[50];
clrscr();
cout<<"\n Enter a string:";
gets(str);
revstk(str);
getch();
}
OUTPUT
Enter a string:english
Reversed string: hsilgne
Aim: Write a C++ program to implement simple queue operations
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
int que[50],rear=-1,front=-1,i,j,max,num,ch;
void insert()
{
rear++;
cout<<"\n Enter the item: ";
cin>>num;
que[rear]=num;
if(front==-1)
front=0;
}
void delet()
{
cout<<"\n Deleted "<< que[front];
if(front==rear)
front=rear=-1;
else
front++;
}
void display()
{
if(front==-1)
{
cout<<"\n\t\t\t QUEUE EMPTY ";
return;
}
cout<<"\n -----------------------------\n";
cout<<"FRONT>> ";
for(i=front;i<=rear;i++)
cout<< que[i]<<" ";
cout<<" << REAR";
cout<<"\n -----------------------------";
}
void main()
{
clrscr();
cout<<"\n Enter the limit: ";
cin>>max;
do
{
cout<<"\n\n SIMPLE QUEUE\n";
cout<<"\n1.Insert\n2.Delete\n3.Display\n4.Exit";
cout<<"\n Enter the choice: ";
cin>>ch;
switch(ch)
{
case 1:if(rear+1>max-1)
{
cout<<"\n\t\t\t Queue full: ";
continue;
}
insert();
break;
case 2:if(front==-1||front>rear)
{
cout<<"\n\t\t\t Queue empty: ";
continue;
}
delet();
break;
case 3:display();
break;
case 4:cout<<".......Thanking you.......";
getch();
exit(0);
default:cout<<"\n\t\t\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
Enter the limit: 2
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 23
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 96
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> 23 96 << REAR
-----------------------------
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 2
Deleted 23
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> 96 << REAR
-----------------------------
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 4
.......Thanking you.......
Aim: Write a C++ program to implement circular queue operations
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
int que[50],rear=-1,front=-1,i,j,max,num,ch;
void insert()
{
rear=(rear+1)%max;
cout<<"\n Enter the item: ";
cin>>num;
que[rear]=num;
if(front==-1)
front=0;
}
void delet()
{
cout<<"\n Deleted "<< que[front];
if(front==rear)
front=rear=-1;
else
front=(front+1)%max;
}
void display()
{
if(front==-1)
{
cout<<"\n QUEUE EMPTY ";
return;
}
cout<<"\n -----------------------------\n";
cout<<"FRONT>> ";
if(rear< front)
{
for(i=front;i< max;i++)
cout<< que[i]<<" ";
for(i=0;i<=rear;i++)
cout<< que[i]<<" ";
}
else
for(i=front;i<=rear;i++)
cout<< que[i]<<" ";
cout<<" << REAR";
cout<<"\n -----------------------------";
}
void main()
{
clrscr();
cout<<"\n Enter the limit: ";
cin>>max;
do
{
cout<<"\n\n CIRCULAR QUEUE\n";
cout<<"\n1.Insert\n2.Delete\n3.Display\n4.Exit";
cout<<"\n Enter the choice: ";
cin>>ch;
switch(ch)
{
case 1:if((front==(rear+1)%max))
{
cout<<"\n Queue full: ";
continue;
}
insert();
break;
case 2:if(front==-1)
{
cout<<"\n Queue empty: ";
continue;
}
delet();
break;
case 3:display();
break;
case 4:cout<<".......Thanking you.......";
getch();
exit(0);
default:cout<<"\n INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
Enter the limit: 2
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 44
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 56
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> 44 56 << REAR
-----------------------------
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 2
Deleted 44
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 99
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> 56 99 << REAR
-----------------------------
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 4
.......Thanking you.......
Aim: Write a C++ program to implement double ended queue operations
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
int que[50],rear=-1,front=-1,i,j,max,num,ch;
void r_insert()
{
rear++;
cout<<"\n Enter the item: ";
cin>>num;
que[rear]=num;
if(front==-1)
front=0;
}
void f_insert()
{
if(front==-1)
front=rear=0;
else if(front>0)
front--;
cout<<"\n Enter the item: ";
cin>>num;
que[front]=num;
}
void r_delet()
{
cout<<"\n Deleted "<< que[rear];
if(front==rear)
front=rear=-1;
else
rear--;
}
void f_delet()
{
cout<<"\n Deleted "<< que[front];
if(front==rear)
front=rear=-1;
else
front++;
}
void display()
{
if(front==-1)
{
cout<<"\n\t\t\t QUEUE EMPTY ";
return;
}
cout<<"\n -----------------------------\n";
cout<<"FRONT>> ";
for(i=front;i<=rear;i++)
cout<< que[i]<<" ";
cout<<" << REAR";
cout<<"\n -----------------------------";
}
void main()
{
clrscr();
cout<<"\n Enter the limit: ";
cin>>max;
do
{
cout<<"\n\n DE-QUEUE\n";
cout<<"\n1.Insert at rear\n2.Insert at front\n3.Delete at front\n4.Delete at rear\n5.Display\n6.Exit";
cout<<"\n Enter the choice: ";
cin>>ch;
switch(ch)
{
case 1:if(rear+1>max-1)
{
cout<<"\n\t\t\t Queue full: ";
continue;
}
r_insert();
break;
case 2:if(front==0)
{
cout<<"\n\t\t\t Cannot insert: ";
continue;
}
f_insert();
break;
case 3:if(front==-1||front>rear)
{
cout<<"\n\t\t\t Queue empty: ";
continue;
}
f_delet();
break;
case 4:if(front==-1||front>rear)
{
cout<<"\n\t\t\t Queue empty: ";
continue;
}
r_delet();
break;
case 5:display();
break;
case 6:cout<<".......Thanking you.......";
getch();
exit(0);
default:cout<<"\n\t\t\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
Enter the limit: 3
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 2
Enter the item: 23
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 1
Enter the item: 44
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 1
Enter the item: 96
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 5
-----------------------------
FRONT>> 23 44 96 << REAR
-----------------------------
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 3
Deleted 23
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 4
Deleted 96
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 5
-----------------------------
FRONT>> 44 << REAR
-----------------------------
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 6
.......Thanking you.......
Aim: Write a C++ program to implement priority queue operations
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
int que[50],rear=-1,front=-1,i,j,max,item,ch;
struct p_que
{
int num;
int pr;
};
class pro
{
public:
void insert(p_que ob[]);
void delet(p_que ob[]);
void display(p_que ob[]);
};
void pro::insert(p_que ob[])
{
rear++;
cout<<"\n Enter the item: ";
cin>>item;
ob[rear].num=item;
cout<<"\n Enter the priority: ";
cin>>ob[rear].pr;
if(front==-1)
front=0;
}
void pro::delet(p_que ob[])
{
p_que temp;
int big=ob[front].pr;
int p=0;
for(int i=front+1;i<=rear;i++)
{
if(ob[i].pr>big)
{
big=ob[i].pr;
p=i;
}
}
for(i=p;i<=rear;i++)
{
ob[i].num=ob[i+1].num;
ob[i].pr=ob[i+1].pr;
}
if(front==rear)
front=rear=-1;
else
rear--;
}
void pro::display(p_que ob[])
{
if(front==-1)
{
cout<<"\n\t\t\t QUEUE EMPTY ";
return;
}
cout<<"\n -----------------------------\n\n";
cout<<"FRONT>> Pr ";
for(i=front;i<=rear;i++)
printf("%3d",ob[i].pr);
cout<<" << REAR";
cout<<"\n\n Data";
for(i=front;i<=rear;i++)
printf("%3d",ob[i].num);
cout<<"\n -----------------------------";
}
void main()
{
p_que o[50];
pro pp;
clrscr();
cout<<"\n Enter the limit: ";
cin>>max;
do
{
cout<<"\n\n PRIORITY QUEUE\n";
cout<<"\n1.Insert\n2.Delete\n3.Display\n4.Exit";
cout<<"\n Enter the choice: ";
cin>>ch;
switch(ch)
{
case 1:if(rear+1>max-1)
{
cout<<"\n\t\t\t Queue full: ";
continue;
}
pp.insert(o);
break;
case 2:if(front==-1||front>rear)
{
cout<<"\n\t\t\t Queue empty: ";
continue;
}
pp.delet(o);
break;
case 3:pp.display(o);
break;
case 4:cout<<".......Thanking you.......";
getch();
exit(0);
default:cout<<"\n\t\t\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
Enter the limit: 3
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 23
Enter the priority: 5
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 44
Enter the priority: 6
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 96
Enter the priority: 7
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> Pr 5 6 7 << REAR
Data 23 44 96
-----------------------------
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 2
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> Pr 5 6 << REAR
Data 23 44
-----------------------------
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 4
.......Thanking you.......
Aim: Write a C++ program to represent a polynomial
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class poly
{
int i,n;
struct rep
{
int co;
int ex;
}r[10];
public:
void read();
void disp();
};
void poly::read()
{
cout<<"\n Enter the number of terms in the polynomial: ";
cin>>n;
cout<<"\n Enter the coefficient and exponent: ";
for(i=0;i< n;i++)
{
cout<<"\n Term "<< i+1<<": ";
cin>>r[i].co>>r[i].ex;
}
}
void poly::disp()
{
cout<<"\nThe polynomial is:\n\n";
for(i=0;i< n-1;i++)
{
cout<< r[i].co<<"x^"<< r[i].ex<<"+";
}
cout<< r[i].co<<"x^"<< r[i].ex;
}
void main()
{
clrscr();
poly ob;
ob.read();
ob.disp();
getch();
}
OUTPUT
Enter the number of terms in the polynomial: 3
Enter the coefficient and exponent:
Term 1: 5 2
Term 2: 6 1
Term 3: 7 0
The polynomial is:
5x^2+6x^1+7x^0
Aim: Write a C++ program to perform polynomial addition
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class poly
{
int i,n;
struct rep
{
int co;
int ex;
}r[10];
public:
void read();
void sum(poly,poly);
void disp();
};
void poly::read()
{
cout<<"\n Enter the number of terms in the polynomial: ";
cin>>n;
cout<<"\n Enter the coefficient and exponent: ";
for(i=0;i< n;i++)
{
cout<<"\n Term "<< i+1<<": ";
cin>>r[i].co>>r[i].ex;
}
}
void poly::disp()
{
cout<<"\n.........................\n";
for(i=0;i< n-1;i++)
{
cout<< r[i].co<<"x^"<< r[i].ex<<"+";
}
cout<< r[i].co<<"x^"<< r[i].ex;
cout<<"\n\n";
}
void poly::sum(poly c1,poly c2)
{
int i=0,j=0,k=0,t;
while(i< c1.n&&j< c2.n)
{//1
if(c1.r[i].ex==c2.r[j].ex)
{
r[k].co=c1.r[i].co+c2.r[j].co;
r[k].ex=c1.r[i].ex;
i++,j++,k++;
}
else if(c1.r[i].ex>c2.r[j].ex)
{
r[k].co=c1.r[i].co;
r[k].ex=c1.r[i].ex;
i++,k++;
}
else if(c1.r[i].ex< c2.r[j].ex)
{
r[k].co=c2.r[j].co;
r[k].ex=c2.r[j].ex;
j++,k++;
}
}//1
while(i< c1.n)
{
r[k].co=c1.r[i].co;
r[k].ex=c1.r[i].ex;
i++,k++;
}
while(j< c2.n)
{
r[k].co=c2.r[j].co;
r[k].ex=c2.r[j].ex;
j++,k++;
}
n=k--;
}
void main()
{
clrscr();
poly c1,c2,c3;
c1.read();
c2.read();
cout<<"\n Polynomial 1: ";
c1.disp();
cout<<"\n Polynomial 2: ";
c2.disp();
c3.sum(c1,c2);
cout<<"\n Sum polynomial : ";
c3.disp();
getch();
}
OUTPUT
Enter the number of terms in the polynomial: 3
Enter the coefficient and exponent:
Term 1: 4 2
Term 2: 5 1
Term 3: 3 0
Enter the number of terms in the polynomial: 2
Enter the coefficient and exponent:
Term 1: 8 3
Term 2: 5 1
Polynomial 1:
.........................
4x^2+5x^1+3x^0
Polynomial 2:
.........................
8x^3+5x^1
Sum polynomial :
.........................
8x^3+4x^2+10x^1+3x^0
Aim: Write a C++ program to implement a singly linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
public:
void display();
void insertend();
void insertbeg();
void insertsp();
void delbeg();
void delend();
void delsp();
};
node *head,*temp,*start,*t;
void node::display()
{
temp=start;
cout<<"\n Data list: ";
while(temp!=NULL)
{
cout<< temp->data<<" ";
temp=temp->next;
}
}
void node::insertbeg()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
if(start==NULL)
{
head->next=NULL;
start=head;
}
else
{
head->next=start;
start=head;
}
}
void node::insertend()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
if(start==NULL)
{
start=head;
}
else
{
temp=start;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=head;
head->next=NULL;
}
}
void node::insertsp()
{
int pos,i;
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
cout<<"\n Enter the position: ";
cin>>pos;
if(pos==1)
insertbeg();
else
{
temp=start;
for(i=1;i< pos-1;i++)
{
temp=temp->next;
}
head->next=temp->next;
temp->next=head;
}
}
void node::delbeg()
{
if(start==NULL)
cout<<"\n LIST EMPTY ";
else
{
//temp=start;
cout<< start->data;
start=start->next;
delete temp;
}
}
void node::delend()
{
temp=start;
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(temp->next==NULL)
{
cout<< temp->data;
start=NULL;
delete temp;
}
else
{
while(temp->next!=NULL)
{
t=temp;
temp=temp->next;
}
cout<< temp->data;
t->next=NULL;
delete temp;
}
}
void node::delsp()
{
if(start==NULL)
{
cout<<"\n LIST EMPTY ";
return;
}
int num;
cout<<"\n Enter the item: ";
cin>>num;
temp=start;
while(temp!=NULL)
{
if(temp->data==num)
{
if(temp==start)
delbeg();
else
{
cout<< temp->data;
t->next=temp->next;
delete temp;
}
}
else
{
t=temp;
temp=temp->next;
}
}
}
void main()
{
int ch;
node ob;
start=NULL;
clrscr();
do
{
//clrscr();
cout<<"\n\n\t...SINGLY LINKED LIST...\n";
cout<<"\n1.INSERT AT BEGINNING\n2.INSERT AT END\n3.INSERT AT A SPECIFIED POSITION";
cout<<"\n4.DELETION FROM BEGINNING\n5.DELETION FROM END\n6.DELETION FROM A SPECIFIED POSITION";
cout<<"\n7.DISPLAY\n8.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insertbeg();break;
case 2:ob.insertend();break;
case 3:ob.insertsp();break;
case 4:ob.delbeg();break;
case 5:ob.delend();break;
case 6:ob.delsp();break;
case 7:ob.display();break;
case 8:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 23
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 44
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 2
Enter the data: 56
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 3
Enter the data: 99
Enter the position: 2
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 44 99 23 56
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 4
44
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 5
56
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 6
Enter the item: 23
23
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 99
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 8
....THANKS....
Aim: Write a C++ program to implement a circular linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
#define MAX 25
class node
{
int data;
node *next;
public:
void display();
void insertend();
void insertbeg();
void insertsp();
void delbeg();
void delend();
void delsp();
};
node *head,*temp,*start,*t,*last;
void node::display()
{
temp=start;
cout<<"\n Data list: ";
while(temp!=last)
{
cout<< temp->data<<" ";
temp=temp->next;
}
cout<< last->data;
}
void node::insertbeg()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
if(start==NULL)
{
start=last=head;
last->next=NULL;
}
else
{
head->next=start;
last->next=head;
start=head;
}
}
void node::insertend()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
if(start==NULL)
{
start=last=head;
last->next=head;
}
else
{
last->next=head;
head->next=start;
last=head;
}
}
void node::insertsp()
{
int pos,i;
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
cout<<"\n Enter the position: ";
cin>>pos;
if(pos==1)
{
insertbeg();
return;
}
else
{
temp=start;
for(i=1;i< pos-1;i++)
{
temp=temp->next;
}
head->next=temp->next;
temp->next=head;
}
}
void node::delbeg()
{
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(start->next==start)
{
temp=start;
cout<< temp->data;
start=last=NULL;
delete temp;
}
else
{
temp=start;
cout<< start->data;
start=start->next;
last->next=start;
delete temp;
}
}
void node::delend()
{
temp=start;
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(start->next==start)
{
temp=start;
cout<< temp->data;
start=last=NULL;
delete temp;
}
else
{
temp=start;
if(temp->next!=last)
{
temp=temp->next;
}
t=last;
cout<< t->data;
temp->next=start;
last=temp;
delete t;
}
}
void node::delsp()
{
if(start==NULL)
{
cout<<"\n LIST EMPTY ";
return;
}
int item;
cout<<"\n Enter the item: ";
cin>>item;
int i=0;
for(temp=start;i< MAX;i++,t=temp,temp=temp->next)
{
if(temp->data==item)
{
if(temp==start)
{
delbeg();
return;
}
else if(temp==last)
{
delend();
return;
}
else
{
t->next=temp->next;
delete temp;
return;
}
}
}
}
void main()
{
int ch;
node ob;
start=last=NULL;
clrscr();
do
{
cout<<"\n\n\t...CIRCULAR LINKED LIST...\n";
cout<<"\n1.INSERT AT BEGINNING\n2.INSERT AT END\n3.INSERT AT A SPECIFIED POSITION";
cout<<"\n4.DELETION FROM BEGINNING\n5.DELETION FROM END\n6.DELETION FROM A SPECIFIED POSITION";
cout<<"\n7.DISPLAY\n8.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insertbeg();break;
case 2:ob.insertend();break;
case 3:ob.insertsp();break;
case 4:ob.delbeg();break;
case 5:ob.delend();break;
case 6:ob.delsp();break;
case 7:ob.display();break;
case 8:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 25
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 47
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 2
Enter the data: 58
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 3
Enter the data: 101
Enter the position: 2
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 47 101 25 58
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 4
47
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 5
58
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 6
Enter the item: 25
25
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 101
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 8
....THANKS....
Aim: Write a C++ program to implement a doubly linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
node *prev;
public:
void display();
void insertend();
void insertbeg();
void insertsp();
void delbeg();
void delend();
void delsp();
};
node *head,*temp,*start,*last,*t,*t1,*t2;
void node::display()
{
temp=start;
if(start==NULL)
{
cout<<"\n LIST EMPTY ";
return;
}
cout<<"\n Data list: ";
while(temp!=last)
{
cout<< temp->data<<" ";
temp=temp->next;
}
cout<< last->data;
}
void node::insertbeg()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
head->prev=NULL;
if(start==NULL)
{
head->next=NULL;
start=last=head;
}
else
{
head->next=start;
start->prev=head;
start=head;
}
}
void node::insertend()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
head->next=NULL;
if(start==NULL)
{
start=last=head;
head->prev=NULL;
}
else
{
head->prev=last;
last->next=head;
last=head;
}
}
void node::insertsp()
{
int pos,i;
head=new node;
cout<<"\n Enter the position: ";
cin>>pos;
if(pos==1)
insertbeg();
else
{
cout<<"\n Enter the data: ";
cin>>head->data;
temp=start;
for(i=1;i< pos-1;i++)
{
temp=temp->next;
}
if(temp->next==NULL)
last=head;
head->next=temp->next;
temp->next=head;
}
}
void node::delbeg()
{
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(start==last)
{
cout<< start->data;
temp=start;
start=last=NULL;
delete temp;
}
else
{
temp=start;
cout<< start->data;
start=start->next;
start->prev=NULL;
delete temp;
}
}
void node::delend()
{
temp=start;
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(start==last)
{
cout<< last->data;
temp=last;
start=last=NULL;
delete temp;
}
else
{
temp=last;
cout<< last->data;
last=last->prev;
last->next=NULL;
delete temp;
}
}
void node::delsp()
{
if(start==NULL)
{
cout<<"\n LIST EMPTY ";
return;
}
int num;
cout<<"\n Enter the item: ";
cin>>num;
temp=start;
while(temp!=NULL)
{
if(temp->data==num)
{
if(temp==start)
{
delbeg();
return;
}
else if(temp==last)
{
delend();
return;
}
else
{
cout<< temp->data;
t1=temp->prev;
t2=temp->next;
t1->next=t2;
t2->prev=t1;
delete temp;
}
}
else
{
temp=temp->next;
}
}
}
void main()
{
int ch;
node ob;
start=last=NULL;
clrscr();
do
{
cout<<"\n\t...DOUBLY LINKED LIST...\n";
cout<<"\n1.INSERT AT BEGINNING\n2.INSERT AT END\n3.INSERT AT A SPECIFIED
POSITION";
cout<<"\n4.DELETION FROM BEGINNING\n5.DELETION FROM END\n6.DELETION
FROM A SPECIFIED POSITION";
cout<<"\n7.DISPLAY\n8.EXIT\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insertbeg();break;
case 2:ob.insertend();break;
case 3:ob.insertsp();break;
case 4:ob.delbeg();break;
case 5:ob.delend();break;
case 6:ob.delsp();break;
case 7:ob.display();break;
case 8:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 45
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 25
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 2
Enter the data: 96
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 3
Enter the position: 3
Enter the data: 56
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 25 45 56 96
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 4
25
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 5
96
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 6
Enter the item: 56
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 45
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 8
....THANKS....
Aim: Write a C++ program to implement a circular doubly linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
node *prev;
public:
node(){}
void create();
void display();
void insertend();
void insertbeg();
void insertsp();
void delbeg();
void delend();
void delsp();
};
node *temp,*t,*curr,*t1,*t2;
static node *head;
void node::create()
{
head=new node;
head->data=0;
head->next=head;
head->prev=head;
}
void node::display()
{
if(head->next==head)
cout<<"\n DATA LIST EMPTY ";
else
{
temp=head;
cout<<"\n Data list: ";
while(temp->next!=head)
{
temp=temp->next;
cout<< temp->data<<" ";
}
}
}
void node::insertbeg()
{
curr=new node;
cout<<"\n Enter the data: ";
cin>>curr->data;
if(head->next==head)
{
head->next=curr;
curr->prev=head;
head->prev=curr;
curr->next=head;
return;
}
temp=head->next;
curr->prev=head;
head->next=curr;
curr->next=temp;
temp->prev=curr;
}
void node::insertend()
{
curr=new node;
cout<<"\n Enter the data: ";
cin>>curr->data;
temp=head->prev;
curr->next=head;
head->prev=curr;
curr->prev=temp;
temp->next=curr;
}
void node::insertsp()
{
int pos,k;
cout<<"\n Enter the position: ";
cin>>pos;
temp=head;
if(pos==1)
insertbeg();
else
{
for(k=1;k< pos;k++)
{
temp=temp->next;
}
curr=new node;
cout<<"\n Enter the data: ";
cin>>curr->data;
t=temp->next;
temp->next=curr;
curr->prev=temp;
curr->next=t;
t->prev=curr;
}
}
void node::delbeg()
{
if(head->next==head)
cout<<"\n DELETION IMPOSSIBLE ";
else
{
temp=head->next;
cout<< temp->data;
t=head->next=temp->next;
t->prev=head;
delete temp;
}
}
void node::delend()
{
if(head->prev==head)
cout<<"\n DELETION IMPOSSIBLE ";
else
{
temp=head->prev;
cout<< temp->data;
t=head->prev=temp->prev;
t->next=head;
delete temp;
}
}
void node::delsp()
{
if(head->next==head)
{
cout<<"\n DELETION IMPOSSIBLE ";
return;
}
else
{
int item;
cout<<"\n Enter the item: ";
cin>>item;
temp=head;
do
{
if(temp->data==item)
{
if(temp->prev==head)
{
delbeg();
return;
}
else if(temp->next==head)
{
delend();
return;
}
else
{
t1=temp->prev;
t2=temp->next;
t1->next=t2;
t2->prev=t1;
delete temp;
return;
}
}
else
{
temp=temp->next;
}
}while(temp!=head);
}
}
void main()
{
int ch;
node ob;
clrscr();
ob.create();
do
{
cout<<"\n\n\t...CIRCULAR DOUBLY LINKED LIST...\n";
cout<<"\n1.INSERT AT BEGINNING\n2.INSERT AT END\n3.INSERT AT A SPECIFIED POSITION";
cout<<"\n4.DELETION FROM BEGINNING\n5.DELETION FROM END\n6.DELETION FROM A SPECIFIED POSITION";
cout<<"\n7.DISPLAY\n8.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insertbeg();break;
case 2:ob.insertend();break;
case 3:ob.insertsp();break;
case 4:ob.delbeg();break;
case 5:ob.delend();break;
case 6:ob.delsp();break;
case 7:ob.display();break;
case 8:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 21
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 41
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 2
Enter the data: 51
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 3
Enter the position: 2
Enter the data: 91
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 41 91 21 51
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 4
41
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 5
51
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 6
Enter the item: 21
21
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 91
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 8
....THANKS....
Aim: Write a C++ program to implement a stack using linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
public:
void display();
void push();
void pop();
};
node *head,*temp,*start,*t;
void node::display()
{
temp=start;
if(temp==NULL)
cout<<"\n STACK EMPTY ";
else
cout<<"\n STACK: ";
while(temp!=NULL)
{
cout<< temp->data<<" ";
temp=temp->next;
}
}
void node::push()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
head->next=NULL;
if(start==NULL)
{
start=head;
}
else
{
temp=start;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=head;
}
}
void node::pop()
{
temp=start;
if(start==NULL)
cout<<"\n STACK EMPTY ";
else if(temp->next==NULL)
{
cout<< temp->data;
start=NULL;
delete temp;
}
else
{
while(temp->next!=NULL)
{
t=temp;
temp=temp->next;
}
cout<< temp->data;
t->next=NULL;
delete temp;
}
}
void main()
{
int ch;
node ob;
start=NULL;
clrscr();
do
{
cout<<"\n\n\t...STACK USING LINKED LIST...\n";
cout<<"\n1.PUSH\n2.POP\n3.DISPLAY\n4.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.push();break;
case 2:ob.pop();break;
case 3:ob.display();break;
case 4:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 23
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 45
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 3
STACK: 23 45
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 2
45
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 3
STACK: 23
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 4
....THANKS....
Aim: Write a C++ program to implement a simple queue using linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
public:
void display();
void insert();
void del();
};
node *head,*temp,*start,*t;
void node::display()
{
temp=start;
if(temp==NULL)
cout<<"\n QUEUE EMPTY ";
else
cout<<"\n QUEUE: ";
while(temp!=NULL)
{
cout<< temp->data<<" ";
temp=temp->next;
}
}
void node::insert()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
head->next=NULL;
if(start==NULL)
{
start=head;
}
else
{
temp=start;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=head;
}
}
void node::del()
{
if(start==NULL)
cout<<"\n QUEUE EMPTY ";
else
{
temp=start;
cout<< start->data;
start=start->next;
delete temp;
}
}
void main()
{
int ch;
node ob;
start=NULL;
clrscr();
do
{
cout<<"\n\t...QUEUE USING LINKED LIST...\n";
cout<<"\n1.INSERTION\n2.DELETION\n3.DISPLAY\n4.EXIT\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insert();break;
case 2:ob.del();break;
case 3:ob.display();break;
case 4:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 25
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 50
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
QUEUE: 25 50
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 2
25
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
QUEUE: 50
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 4
....THANKS....
Aim: Write a C++ program to implement a circular queue using linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
public:
node(){}
void display();
void insert();
void del();
};
node *head,*temp,*start,*t,*last;
void node::display()
{
temp=start;
cout<<"\n Data list: ";
while(temp!=last)
{
cout<< temp->data<<" ";
temp=temp->next;
}
cout<< last->data;
}
void node::insert()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
if(start==NULL)
{
start=last=head;
last->next=head;
}
else
{
last->next=head;
head->next=start;
last=head;
}
}
void node::del()
{
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(start->next==start)
{
temp=start;
cout<< temp->data;
start=last=NULL;
delete temp;
}
else
{
temp=start;
cout<< start->data;
start=start->next;
last->next=start;
delete temp;
}
}
void main()
{
int ch;
node ob;
start=last=NULL;
clrscr();
do
{
cout<<"\n\n\t...CIRCULAR QUEUE USING LL...\n";
cout<<"\n1.INSERTION\n2.DELETION\n3.DISPLAY\n4.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insert();break;
case 2:ob.del();break;
case 3:ob.display();break;
case 4:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 23
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 44
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
Data list: 23 44
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 2
23
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
Data list: 44
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 4
....THANKS....
Aim: Write a C++ program to implement a priority queue using linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
int prty;
node *next;
public:
void display();
void insert();
void del();
void delbeg();
};
node *head,*temp,*start,*t;
void node::display()
{
temp=start;
cout<<"\n Data list: ";
while(temp!=NULL)
{
printf("%3d ",temp->data);
temp=temp->next;
}
temp=start;
cout<<"\n Priority: ";
while(temp!=NULL)
{
printf("%3d ",temp->prty);
temp=temp->next;
}
}
void node::insert()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
cout<<"\n Enter the priority: ";
cin>>head->prty;
head->next=NULL;
if(start==NULL)
{
start=head;
}
else
{
temp=start;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=head;
}
}
void node::delbeg()
{
if(start==NULL)
cout<<"\n LIST EMPTY ";
else
{
cout<< start->data;
start=start->next;
delete temp;
}
}
void node::del()
{
if(start==NULL)
{
cout<<"\n LIST EMPTY ";
return;
}
int lp;
temp=start;
lp=temp->prty;
while(temp!=NULL)
{
if(temp->prty>lp)
{
lp=temp->prty;
}
temp=temp->next;
}
temp=start;
while(temp!=NULL)
{
if(temp->prty==lp)
{
if(temp==start)
{
delbeg();
return;
}
else
{
cout<< temp->data;
t->next=temp->next;
delete temp;
return;
}
}
else
{
t=temp;
temp=temp->next;
}
}
}
void main()
{
int ch;
node ob;
start=NULL;
clrscr();
do
{
cout<<"\n\n\t...PRIORITY QUEUE USING LL...\n";
cout<<"\n1.INSERTION\n2.DELETION\n3.DISPLAY\n4.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insert();break;
case 2:ob.del();break;
case 3:ob.display();break;
case 4:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 23
Enter the priority: 5
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 96
Enter the priority: 6
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
Data list: 23 96
Priority: 5 6
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 2
96
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
Data list: 23
Priority: 5
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 4
....THANKS....
Aim: Write a C++ program to perform polynomial addition using linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
struct node
{
int co,exp;
node *next;
};
class poly
{
node *start,*temp,*head;
public:
poly()
{
start=NULL;
}
void create();
void display();
void add(poly,poly);
};
void poly::create()
{
int n;
do
{
head=new node;
cout<<"\n Enter values for coefficient and exponent: ";
cin>>head->co>>head->exp;
head->next=NULL;
if(head->co==0)
goto PROCEED;
else if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
PROCEED:
cout<<"\n Continue? ,then press \"1\":";
cin>>n;
}while(n==1);
}
void poly::display()
{
temp=start;
cout<<"\n\n........................................\n\n\n\t";
while(temp->next!=NULL)
{
cout<< temp->co<<"x^"<< temp->exp<<"+";
temp=temp->next;
}
cout<< temp->co<<"x^"<< temp->exp;
cout<<"\n\n........................................\n";
}
void poly::add(poly r1,poly r2)
{
r1.temp=r1.start;
r2.temp=r2.start;
while(r1.temp!=NULL&&r2.temp!=NULL)
{
if(r1.temp->exp>r2.temp->exp)
{
head=new node;
head->co=r1.temp->co;
head->exp=r1.temp->exp;
head->next=NULL;
if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
r1.temp=r1.temp->next;
}
else if(r1.temp->expexp)
{
head=new node;
head->co=r2.temp->co;
head->exp=r2.temp->exp;
head->next=NULL;
if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
r2.temp=r2.temp->next;
}
else
{
head=new node;
head->co=r1.temp->co+r2.temp->co;
head->exp=r1.temp->exp;
head->next=NULL;
if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
r1.temp=r1.temp->next;
r2.temp=r2.temp->next;
}
}
while(r1.temp!=NULL)
{
head=new node;
head->co=r1.temp->co;
head->exp=r1.temp->exp;
head->next=NULL;
if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
r1.temp=r1.temp->next;
}
while(r2.temp!=NULL)
{
head=new node;
head->co=r2.temp->co;
head->exp=r2.temp->exp;
head->next=NULL;
if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
r2.temp=r2.temp->next;
}
}
void main()
{
poly p1,p2,p3;
clrscr();
cout<<"\n First polynomial...";
p1.create();
cout<<"\n Second polynomial...";
p2.create();
p3.add(p1,p2);
cout<<"\n Result of addition: ";
p3.display();
getch();
}
OUTPUT
First polynomial...
Enter values for coefficient and exponent: 4 3
Continue? ,then press "1":1
Enter values for coefficient and exponent: 5 2
Continue? ,then press "1":1
Enter values for coefficient and exponent: 3 1
Continue? ,then press "1":1
Enter values for coefficient and exponent: 6 0
Continue? ,then press "1":0
Second polynomial...
Enter values for coefficient and exponent: 3 3
Continue? ,then press "1":1
Enter values for coefficient and exponent: 2 2
Continue? ,then press "1":1
Enter values for coefficient and exponent: 3 1
Continue? ,then press "1":1
Enter values for coefficient and exponent: 1 0
Continue? ,then press "1":0
Result of addition:
. . . . . . . . . . . . . . . . .
7x^3+7x^2+6x^1+7x^0
. . . . . . . . . . . . . . . . .
Aim: Write a C++ program to implement a binary tree
PROGRAM
#include
#include
#include
struct node
{
char data;
node *lchild,*rchild;
};
node *head;
class tree
{
node *root;
public:
tree()
{
root=NULL;
}
node * read();
node * makenode(char);
void createtree(node *);
void inorder(node *);
void preorder(node *);
void postorder(node *);
};
node * tree::read()
{
char item;
cout<<"\n Enter data: ";
cin>>item;
root=makenode(item);
createtree(root);
return root;
}
node * tree::makenode(char x)
{
head=new node;
head->data=x;
head->lchild=head->rchild=NULL;
return head;
}
void tree::createtree(node *root)
{
int ch;
char item;
if(root!=NULL)
{
cout<<"\n Create left child for "<< root->data<<" (if so press \"1\")";
cin>>ch;
if(ch==1)
{
cout<<"\n Enter data: ";
cin>>item;
root->lchild=makenode(item);
createtree(root->lchild);
}
cout<<"\n Create right child for "<< root->data<<" (if so press \"1\")";
cin>>ch;
if(ch==1)
{
cout<<"\n Enter data: ";
cin>>item;
root->rchild=makenode(item);
createtree(root->rchild);
}
}
}
void tree::inorder(node *root)
{
if(root!=NULL)
{
inorder(root->lchild);
cout<< root->data<<" ";
inorder(root->rchild);
}
}
void tree::preorder(node *root)
{
if(root!=NULL)
{
cout<< root->data<<" ";
preorder(root->lchild);
preorder(root->rchild);
}
}
void tree::postorder(node *root)
{
if(root!=NULL)
{
postorder(root->lchild);
postorder(root->rchild);
cout<< root->data<<" ";
}
}
void main()
{
tree ob;
node *root;
int ch;
clrscr();
do
{
cout<<"\n\n.... BINARY TREE ....\n\n";
cout<<"\n1.Creation\n2.Inorder Traversal\n3.Preorder Traversal";
cout<<"\n4.Postorder Traversal\n5.Exit";
cout<<"\n\t Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:root=ob.read();
break;
case 2:ob.inorder(root);
break;
case 3:ob.preorder(root);
break;
case 4:ob.postorder(root);
break;
case 5:cout<<"\n\n\t... Thanking You ...";
getch();
exit(0);
default:cout<<"\n Invalid key-in ";
}
}while(1);
}
OUTPUT
.... BINARY TREE ....
1.Creation
2.Inorder Traversal
3.Preorder Traversal
4.Postorder Traversal
5.Exit
Enter your choice: 1
Enter data: A
Create left child for A (if so press "1")1
Enter data: B
Create left child for B (if so press "1")1
Enter data: C
Create left child for C (if so press "1")0
Create right child for C (if so press "1")0
Create right child for B (if so press "1")1
Enter data: D
Create left child for D (if so press "1")0
Create right child for D (if so press "1")0
Create right child for A (if so press "1")1
Enter data: E
Create left child for E (if so press "1")0
Create right child for E (if so press "1")0
.... BINARY TREE ....
1.Creation
2.Inorder Traversal
3.Preorder Traversal
4.Postorder Traversal
5.Exit
Enter your choice: 2
C B D A E
.... BINARY TREE ....
1.Creation
2.Inorder Traversal
3.Preorder Traversal
4.Postorder Traversal
5.Exit
Enter your choice: 3
A B C D E
.... BINARY TREE ....
1.Creation
2.Inorder Traversal
3.Preorder Traversal
4.Postorder Traversal
5.Exit
Enter your choice: 4
C D B E A
.... BINARY TREE ....
1.Creation
2.Inorder Traversal
3.Preorder Traversal
4.Postorder Traversal
5.Exit
Enter your choice: 5
... Thanking You ...
Aim: Write a C++ program to implement Binary Search Tree
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
struct node
{
int data;
node *left;
node *right;
};
node *root;
class bst
{
public:
bst()
{
root=NULL;
}
node *insert(node *,int);
void delet(node *,node*);
void search(node *,int);
node *find(node *,int);
};
node * bst::insert(node *root,int item)
{
if(root==NULL)
{
root=new node;
root->data=item;
root->left=root->right=NULL;
}
else if(itemdata)
root->left=insert(root->left,item);
else
root->right=insert(root->right,item);
return root;
}
void bst::search(node *root,int item)
{
if(root==NULL)
cout<<"\n Number doesnot exist ";
else if(root->data==item)
cout<<"\n Number is present ";
else if(itemdata)
search(root->left,item);
else
search(root->right,item);
}
node *bst::find(node *root,int item)
{
node *temp;
temp=root;
node *parent;
while(root!=NULL)
{
if(itemdata)
{
parent=root;
root=root->left;
}
else if(item>root->data)
{
parent=root;
root=root->right;
}
else
{
delet(root,parent);
break;
}
}
if(root==NULL)
{
cout<<"\n Item doesnot exist ";
}
return temp;
}
void bst::delet(node *root,node *parent)
{
if(root->left==NULL&&root->right==NULL)//terminal node
{
if(parent->left==root)
parent->left=NULL;
else
parent->right=NULL;
return;
}
else if(root->left!=NULL&&root->right!=NULL)//node with 2 childs
{
node *ptr,*temp;
parent=root;
temp=root->left;
ptr=root->right;
if(ptr->left==NULL)
{
root->data=ptr->data;
}
while(ptr->left!=NULL)
{
parent=ptr;
ptr=ptr->left;
root->data=ptr->data;
}
root->left=temp;
delete ptr;
return;
}
else//node with 1 child
{
if(parent->left==root)
{
if(root->left==NULL)
parent->left=root->right;
else
parent->left=root->left;
}
else if(parent->right==root)
{
if(root->left==NULL)
parent->right=root->right;
else
parent->right=root->left;
}
return;
}
}
void main()
{
clrscr();
bst ob;
int item,ch;
node *temp;
do
{
cout<<"\n\n ... BINARY SEARCH TREE ... ";
cout<<"\n\n1.Insertion\n2.Deletion\n3.Searching\n4.Exit";
cout<<"\n\t Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1: cout<<"\n Enter an item: "; cin>>item;
root=ob.insert(root,item);
break;
case 2: cout<<"\n Enter the item: "; cin>>item;
root=ob.find(root,item);
break;
case 3: cout<<"\n Enter the item: "; cin>>item;
ob.search(root,item);
break;
case 4: cout<<"\n ... Thanking You ...";
getch();
exit(0);
default:cout<<"\n Invalid key-in ";
}
}while(1);
}
OUTPUT
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 25
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 10
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 20
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 5
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 35
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 32
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 3
Enter the item: 10
Number is present
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 2
Enter the item: 10
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 3
Enter the item: 10
Number doesnot exist
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 4
... Thanking You ...
Aim: Write a C++ program to create and evaluate an Expression Tree
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"ctype.h"
#include"stdio.h"
struct node
{
char data;
node *lchild;
node *rchild;
};
node *head;
char p[50];
node *stack[50];
int top=-1;
float c;
float v;
node *q;
class tree
{
node *root;
public:
tree(){ }
float evaluate(node *);
node *makenode(char);
void createtree();
void push(node *);
node *pop();
float result(float,float,char);
};
void tree::createtree()
{
int i=0;
while(p[i]!='\0')
{
root=makenode(p[i]);
if(!isalpha(p[i]))
{
root->rchild=pop();
root->lchild=pop();
}
push(root);
i++;
}
}
void tree::push(node *root)
{
top++;
stack[top]=root;
}
node *tree::pop()
{
q=stack[top];
top--;
return q;
}
node * tree::makenode(char x)
{
head=new node;
head->data=x;
head->lchild=head->rchild=NULL;
return head;
}
float tree::evaluate(node *root)
{
float a,b;
if(!isalpha(root->lchild->data))
a=evaluate(root->lchild);
else
{
cout<<"\n Enter the value for "<< root->lchild->data<<": ";
cin>>a;
}
if(!isalpha(root->rchild->data))
b=evaluate(root->rchild);
else
{
cout<<"\n Enter the value for "<< root->rchild->data<<": ";
cin>>b;
}
v=result(a,b,root->data);
return v;
}
float tree::result(float a,float b,char op)
{
float c=0;
switch(op)
{
case '+': c=a+b; break;
case '-': c=a-b; break;
case '*': c=a*b; break;
case '/': if(b!=0)
c=a/b;
else
{
cout<<"\n Error: ";
getch();
exit(0);
}
break;
}
return c;
}
void main()
{
clrscr();
float ans;
cout<<"\n Enter a postfix expression: ";
gets(p);
tree ob;
ob.createtree();
ans=ob.evaluate(stack[top]);
cout<<"\n Value of the expression is: "<< ans;
getch();
}
OUTPUT
Enter a postfix expression: ab/cd/*
Enter the value for a: 15
Enter the value for b: 5
Enter the value for c: 20
Enter the value for d: 4
Value of the expression is: 15
Aim: Write a C++ program to implement various Sorting techniques
PROGRAM
#include"iostream.h"
#include"conio.h"
#include"process.h"
int item;
void display(int a[],int n)
{
cout<<"\n Sorted elements are: \n";
for(int i=0;i< n;i++)
cout<< a[i]<<" ";
}
void bubblesort(int a[],int n)
{
int i,j,t;
for(i=0;i< n;i++)
{
for(j=0;j< n-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void seletionsort(int a[],int n)
{
int i,j,t;
for(i=0;i< n;i++)
{
for(j=i+1;j< n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
void insertionsort(int a[],int n)
{
int k,j,t;
for(k=1;k< n;k++)
{
t=a[k];
j=k-1;
while(t< a[j]&&j>=0)
{
a[j+1]=a[j];
j--;
}
a[j+1]=t;
}
}
void quicksort(int a[],int low,int high)
{
int l,h,key,t;
l=low;
h=high;
key=a[(low+high)/2];
do
{
while(key>a[low])
low++;
while(key< a[high])
high--;
if(low<=high)
{
t=a[low];
a[low++]=a[high];
a[high--]=t;
}
}while(low<=high);
if(l< high)
quicksort(a,l,high);
if(low< h)
quicksort(a,low,h);
}
void bucketsort(int a[],int n)
{
int i,j,pass,k,l,div=1,num=0,large=a[0];
int buck[10],q[15][15];
for(i=1;i< n;i++)
{
if(a[i]>large)
large=a[i];
}
while(large>0)
{
num++;
large=large/10;
}
for(pass=0;pass< num;pass++)
{
for(k=0;k<10;k++)
buck[k]=0;
for(i=0;i< n;i++)
{
l=(a[i]/div)%10;
q[l][buck[l]]=a[i];
buck[l]++;
}
i=0;
for(k=0;k<10;k++)
for(j=0;j< buck[k];j++)
{
a[i]=q[k][j];
i++;
}
div=div*10;
}
}
void merge(int a[],int low,int mid,int high)
{
int i,h,j,b[30],k;
i=low;
h=low;
j=mid+1;
while(h<=mid&&j<=high)
{
if(a[h]< a[j])
{
b[i]=a[h];
h++;
}
else
{
b[i]=a[j];
j++;
}
i++;
}
if(h>mid)
{
for(k=j;k<=high;k++)
{
b[i]=a[k];
i++;
}
}
else
{
for(k=h;k<=mid;k++)
{
b[i]=a[k];
i++;
}
}
for(k=low;k<=high;k++)
{
a[k]=b[k];
}
}
void mergesort(int a[],int low,int high)
{
int mid;
if(low< high)
{
mid=(low+high)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,mid,high);
}
}
/* for tree sort */
struct node
{
int data;
node *left;
node *right;
};
node *root;
class bst
{
public:
bst()
{
root=NULL;
}
node *insert(node *,int);
};
node * bst::insert(node *root,int item)
{
if(root==NULL)
{
root=new node;
root->data=item;
root->left=root->right=NULL;
}
else if(itemdata)
root->left=insert(root->left,item);
else
root->right=insert(root->right,item);
return root;
}
void inorder(node *root)
{
if(root!=NULL)
{
inorder(root->left);
cout<< root->data<<" ";
inorder(root->right);
}
}
void treesort(int a[],int n)
{
node *root;
bst ob;
for(int i=0;i< n;i++)
{
root=ob.insert(root,a[i]);
}
cout<<"\n Sorted elements are: \n";
inorder(root);
}
/* end of tree sort */
void heapsort(int a[],int n)
{
int i,s,f,item,value;
for(i=0;i< n;i++)
{
item=a[i];
s=i;
f=(s-1)/2;
while(s>0&&a[f]< item)
{
a[s]=a[f];
s=f;
f=(s-1)/2;
}
a[s]=item;
}
for(i=n-1;i>0;i--)
{
value=a[i];
a[i]=a[0];
f=0;
if(i==1)
s=-1;
else
s=1;
if(i>2&&a[2]>a[1])
s=2;
while(s>=0&&value< a[s])
{
a[f]=a[s];
f=s;
s=2*f+1;
if(s+1<=i-1&&a[s] s=s+1;
if(s>i-1)
s=-1;
}
a[f]=value;
}
}
void main()
{
int a[50],num[50],n,i,flag=1,ch,low,high;
clrscr();
do
{
cout<<"\n..... SORTING ....\n\n";
cout<<"\n1.BUBBLE SORT\n2.SELECTION SORT\n3.INSERTION SORT\n4.QUICK SORT";
cout<<"\n5.RADIX SORT\n6.MERGE SORT\n7.TREE SORT\n8.HEAP SORT\n9.EXIT";
cout<<"\n\t Enter your choice: ";
cin>>ch;
if(ch>=1&&ch<=8&&flag==1)
{
cout<<"\n Enter the limit: ";
cin>>n;
cout<<"\n Enter the elements: ";
for(i=0;i< n;i++)
{
cin>>a[i];
}
flag=0;
}
for(i=0;i< n;i++)
num[i]=a[i];
switch(ch)
{
case 1:bubblesort(num,n);
break;
case 2:seletionsort(num,n);
break;
case 3:insertionsort(num,n);
break;
case 4:low=0;high=n-1;
quicksort(num,low,high);
break;
case 5:bucketsort(num,n);
break;
case 6:low=0;high=n-1;
mergesort(num,low,high);
break;
case 7:flag=0;
treesort(num,n);
break;
case 8:heapsort(num,n);
break;
case 9:cout<<"\n\t .....Thanking You .....";
getch();
exit(0);
default:cout<<"\n\t Invalid key-in ";
}
if(ch>=1&&ch<=8&&ch!=7)
{
display(num,n);
}
}while(1);
}
OUTPUT
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 1
Enter the limit: 5
Enter the elements: 99 12 56 3 4
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 2
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 3
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 4
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 5
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 6
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 7
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 8
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 9
.....Thanking You .....
Aim: Write a C++ program to implement various Searching techniques
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
void sequential(int a[],int n,int item)
{
int flag=0,i;
for(i=0;i< n;i++)
{
if(a[i]==item)
{
cout<<"\n Item is found at position "<< i+1;
flag=1;
break;
}
}
if(flag==0) cout<<"\n Item not found ";
}
void binary(int a[],int n,int item)
{
int loc=-1,b=0,e=n-1,mid=-1;
while((b<=e)&&(a[mid]!=item))
{
mid=(b+e)/2;
if(item==a[mid])
{
cout<<"\n Item is found at position "<< mid+1;
loc=mid;
}
else if(item< a[mid])
e=mid-1;
else
b=mid+1;
}
if(loc==-1) cout<<"\n Item not found ";
}
void main()
{
int num[50],n,item,ch,flag=1,i;
clrscr();
do
{
cout<<"\n\n\n .... SEARCHING .... \n\n\n";
cout<<"\n1.Sequential Search\n2.Binary Search\n3.Enter another list\n4.Exit";
cout<<"\n\t Enter your choice: ";
cin>>ch;
if(ch==3) flag=1;
if(ch>=1&&ch<=3&&flag==1)
{
cout<<"\n Enter the limit: ";
cin>>n;
cout<<"\n Enter the elements: ";
for(i=0;i< n;i++)
cin>>num[i];
}
if(ch>=1&&ch<=2)
{
cout<<"\n Enter the element to be searched: ";
cin>>item;
}
switch(ch)
{
case 1:sequential(num,n,item);
break;
case 2:binary(num,n,item);
break;
case 3:break;
case 4:cout<<"\n\t.... Thanking You .... ";
getch();
exit(0);
default:cout<<"\n\t Invalid key-in";
}
flag=0;
}while(1);
}
OUTPUT
.... SEARCHING ....
1.Sequential Search
2.Binary Search
3.Enter another list
4.Exit
Enter your choice: 1
Enter the limit: 5
Enter the elements: 12 56 10 45 96
Enter the element to be searched: 10
Item is found at position 3
.... SEARCHING ....
1.Sequential Search
2.Binary Search
3.Enter another list
4.Exit
Enter your choice: 3
Enter the limit: 5
Enter the elements: 10 20 30 40 50
.... SEARCHING ....
1.Sequential Search
2.Binary Search
3.Enter another list
4.Exit
Enter your choice: 2
Enter the element to be searched: 40
Item is found at position 4
....SEARCHING ....
1.Sequential Search
2.Binary Search
3.Enter another list
4.Exit
Enter your choice: 4
.... Thanking You ....
NB: To rectify problems associated with html coding white spaces are provided in statements especially after "<<" and "<" symbols... Please edit those before running, otherwise you may come across errors...
Email your suggestions and feedbacks to
< btechitians@gmail.com >
Enjoy programming
.................................................................................................
Aim: Write a C++ program to find the sparse of a matrix
PROGRAM
#include”iostream.h”
#include”conio.h”
void main()
{
int a[50][50],sp[50][50],i,j,k=0,m,n;
clrscr();
cout<<"\n Enter the order of matrix: ";
cin>>m>>n;
cout<<"\n Enter the elements: ";
for(i=0;i< m;i++)
{
for(j=0;j< n;j++)
{
cin>>a[i][j];
if(a[i][j]!=0)
{
k++;
sp[k][0]=i;
sp[k][1]=j;
sp[k][2]=a[i][j];
}
}
}
sp[0][0]=m;
sp[0][1]=n;
sp[0][2]=k;
cout<<"\n The sparse matrix is:\n";
for(i=0;i<=k;i++)
{
for(j=0;j<3;j++)
cout<< sp[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of matrix: 3 3
Enter the elements:
0 1 0
2 0 0
0 0 3
The sparse matrix is:
3 3 3
0 1 1
1 0 2
2 2 3
Aim: Write a C++ program to find the transpose of a matrix using the given sparse matrix
PROGRAM
#include”iostream.h”
#include”conio.h”
void main()
{
int a[50][50],sp[50][50],i,j,k=0,m,n,tsp[50][50],p=0;
clrscr();
cout<<"\n Enter the order of matrix: ";
cin>>m>>n;
cout<<"\n Enter the elements: ";
for(i=0;i< m;i++)
{
for(j=0;j< n;j++)
{
cin>>a[i][j];
if(a[i][j]!=0)
{
k++;
sp[k][0]=i;
sp[k][1]=j;
sp[k][2]=a[i][j];
}
}
}
sp[0][0]=m;
sp[0][1]=n;
sp[0][2]=k;
cout<<"\n The sparse matrix is:\n";
for(i=0;i<=k;i++)
{
for(j=0;j<3;j++)
cout<< sp[i][j]<<" ";
cout<<"\n";
}
p=0;
for(j=0;j< n;j++)
{
for(i=1;i<=k;i++)
{
if(sp[i][1]==j)
{
p++;
tsp[p][0]=sp[i][1];
tsp[p][1]=sp[i][0];
tsp[p][2]=sp[i][2];
}
}
}
tsp[0][0]=sp[0][1];
tsp[0][1]=sp[0][0];
tsp[0][2]=p;
cout<<"\n Transpose of sparse \n";
for(i=0;i<=p;i++)
{
for(j=0;j<3;j++)
cout<< tsp[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of matrix: 3 3
Enter the elements:
1 0 0
0 0 2
0 3 0
The sparse matrix is:
3 3 3
0 0 1
1 2 2
2 1 3
Transpose of sparse
3 3 3
0 0 1
1 2 3
2 1 2
Aim: Write a C++ program to find transpose of a matrix using fast transpose method
PROGRAM
#include”iostream.h”
#include”conio.h”
void main()
{
int a[50][50],sp[50][50],i,j,k=0,m,n,t,tsp[50][50];
int start[50],size[50];
clrscr();
cout<<"\n Enter the order of matrix: ";
cin>>m>>n;
cout<<"\n Enter the elements: ";
for(i=0;i< m;i++)
{
for(j=0;j< n;j++)
{
cin>>a[i][j];
if(a[i][j]!=0)
{
k++;
sp[k][0]=i;
sp[k][1]=j;
sp[k][2]=a[i][j];
}
}
}
sp[0][0]=m;
sp[0][1]=n;
sp[0][2]=k;
cout<<"\n The sparse matrix is:\n";
for(i=0;i<=k;i++)
{
for(j=0;j<3;j++)
cout<< sp[i][j]<<" ";
cout<<"\n";
}
for(i=0;i< n;i++)
size[i]=0;
for(i=1;i<=k;i++)
{
t=sp[i][1];
size[t]++;
}
start[0]=1;
for(i=1;i< n;i++)
start[i]=start[i-1]+size[i-1];
for(i=1;i<=k;i++)
{
j=sp[i][1];
t=start[j];
tsp[t][0]=sp[i][1];
tsp[t][1]=sp[i][0];
tsp[t][2]=sp[i][2];
start[j]++;
}
tsp[0][0]=sp[0][1];
tsp[0][1]=sp[0][0];
tsp[0][2]=sp[0][2];
cout<<"\n Transpose \n";
for(i=0;i<=k;i++)
{
for(j=0;j<3;j++)
cout<< tsp[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of matrix: 3 3
Enter the elements:
0 1 0
2 0 0
0 0 5
The sparse matrix is:
3 3 3
0 1 1
1 0 2
2 2 5
Transpose
3 3 3
0 1 2
1 0 1
2 2 5
Aim: Write a C++ program to convert the given sparse to original matrix
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
void main()
{
int sp[50][50],a[40][40],k,i,j,m,n,r,c;
clrscr();
cout<<"\n Enter the order of sparse matrix: ";
cin>>n;
cout<<"\n Enter the sparse matrix: ";
for(i=0;i< n;i++)
for(j=0;j<3;j++)
cin>>sp[i][j];
if(sp[0][2]!=(n-1))
{
cout<<"\n Error ";
getch();
exit(0);
}
for(i=0;i<40;i++)
for(j=0;j<40;j++)
a[i][j]=0;
m=sp[0][0];
n=sp[0][1];
k=sp[0][2];
for(i=1;i<=k;i++)
{
r=sp[i][0];
c=sp[i][1];
a[r][c]=sp[i][2];
}
cout<<"\n The original matrix is: \n";
for(i=0;i< m;i++)
{
for(j=0;j< n;j++)
cout<< a[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of sparse matrix: 4
Enter the sparse matrix:
3 3 3
0 1 2
1 0 1
2 1 3
The original matrix is:
0 2 0
1 0 0
0 3 0
Aim: Write a C++ program to perform sparse matrix addition
PROGRAM
#include”iostream.h”
#include”conio.h”
void main()
{
int num,sp1[50][50],i,j,k1=0,k2=0,k=0,m1,n1,m2,n2,sp2[50][50],sp[50][50];
int m,n;
clrscr();
cout<<"\n Enter the order of matrix1: ";
cin>>m1>>n1;
cout<<"\n Enter the elements: ";
for(i=0;i< m1;i++)
{
for(j=0;j< n1;j++)
{
cin>>num;
if(num!=0)
{
k1++;
sp1[k1][0]=i;
sp1[k1][1]=j;
sp1[k1][2]=num;
}
}
}
sp1[0][0]=m1;
sp1[0][1]=n1;
sp1[0][2]=k1;
cout<<"\n Enter the order of matrix2: ";
cin>>m2>>n2;
cout<<"\n Enter the elements: ";
for(i=0;i< m2;i++)
{
for(j=0;j< n2;j++)
{
cin>>num;
if(num!=0)
{
k2++;
sp2[k2][0]=i;
sp2[k2][1]=j;
sp2[k2][2]=num;
}
}
}
sp2[0][0]=m2;
sp2[0][1]=n2;
sp2[0][2]=k2;
i=1;
j=1;
k=0;
while(i<=k1&&j<=k2)
{
if(sp1[i][0]==sp2[j][0])
{
if(sp1[i][1]< sp2[j][1])
{
k++;
sp[k][0]=sp1[i][0];
sp[k][1]=sp1[i][1];
sp[k][2]=sp1[i][2];
i++;
}
else if(sp1[i][1]>sp2[j][1])
{
k++;
sp[k][0]=sp2[j][0];
sp[k][1]=sp2[j][1];
sp[k][2]=sp2[j][2];
j++;
}
else
{
k++;
sp[k][0]=sp2[j][0];
sp[k][1]=sp2[j][1];
sp[k][2]=sp2[j][2]+sp1[i][2];
j++;i++;
}
}
else if(sp1[i][0]< sp2[j][0])
{
k++;
sp[k][0]=sp1[i][0];
sp[k][1]=sp1[i][1];
sp[k][2]=sp1[i][2];
i++;
}
else if(sp1[i][0]>sp2[j][0])
{
k++;
sp[k][0]=sp2[j][0];
sp[k][1]=sp2[j][1];
sp[k][2]=sp2[j][2];
j++;
}
}
while(i<=k1)
{
k++;
sp[k][0]=sp1[i][0];
sp[k][1]=sp1[i][1];
sp[k][2]=sp1[i][2];
i++;
}
while(j<=k2)
{
k++;
sp[k][0]=sp2[j][0];
sp[k][1]=sp2[j][1];
sp[k][2]=sp2[j][2];
j++;
}
m=((m1>m2)?m1:m2);
n=((n1>n2)?n1:n2);
sp[0][0]=m;
sp[0][1]=n;
sp[0][2]=k;
cout<<"\n The sparse of sum matrix is:\n";
for(i=0;i<=k;i++)
{
for(j=0;j<3;j++)
cout<< sp[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of matrix1: 3 3
Enter the elements:
1 0 0
0 5 0
0 0 6
Enter the order of matrix2: 3 3
Enter the elements:
0 5 0
0 6 0
0 0 3
The sparse of sum matrix is:
3 3 4
0 0 1
0 1 5
1 1 11
2 2 9
Aim: Write a C++ program to perform sparse multiplication
PROGRAM
#include”iostream.h”
#include”conio.h”
#include"process.h"
void main()
{
int num,sp1[50][50],mul[50][50],i,j,k1=0,k2=0,k=0,m1,n1,m2,n2,sp2[50][50],sp[50][50];
int m,n,t;
clrscr();
cout<<"\n Enter the order of matrix1: ";
cin>>m1>>n1;
cout<<"\n Enter the elements: ";
for(i=0;i< m1;i++)
{
for(j=0;j< n1;j++)
{
cin>>num;
if(num!=0)
{
k1++;
sp1[k1][0]=i;
sp1[k1][1]=j;
sp1[k1][2]=num;
}
}
}
sp1[0][0]=m1;
sp1[0][1]=n1;
sp1[0][2]=k1;
cout<<"\n Enter the order of matrix2: ";
cin>>m2>>n2;
cout<<"\n Enter the elements: ";
for(i=0;i< m2;i++)
{
for(j=0;j< n2;j++)
{
cin>>num;
if(num!=0)
{
k2++;
sp2[k2][0]=i;
sp2[k2][1]=j;
sp2[k2][2]=num;
}
}
}
sp2[0][0]=m2;
sp2[0][1]=n2;
sp2[0][2]=k2;
if(n1!=m2)
{
cout<<"\n Error ";
getch();
exit(0);
}
k=0;
for(i=1;i<=k1;i++)
{
for(j=1;j<=k2;j++)
{
if(sp1[i][1]==sp2[j][0])
{
k++;
sp[k][0]=sp1[i][0];
sp[k][1]=sp2[j][1];
sp[k][2]=sp1[i][2]*sp2[j][2];
}
}
}
sp[0][2]=k;
sp[0][0]=m1;
sp[0][1]=n2;
t=0;
for(i=0;i< sp[0][0];i++)
{
for(j=0;j< sp[0][1];j++)
{
for(k1=1;k1<=sp[0][2];k1++)
{
if(sp[k1][0]==i&&sp[k1][1]==j)
{
t++;
mul[t][0]=sp[k1][0];
mul[t][1]=sp[k1][1];
mul[t][2]=sp[k1][2];
}
}
}
}
mul[0][2]=k;
mul[0][0]=m1;
mul[0][1]=n2;
cout<<"\n The sparse of product matrix is:\n";
for(i=0;i<=t;i++)
{
for(j=0;j<3;j++)
cout<< mul[i][j]<<" ";
cout<<"\n";
}
getch();
}
OUTPUT
Enter the order of matrix1: 3 3
Enter the elements:
2 0 9
0 1 0
0 0 2
Enter the order of matrix2: 3 3
Enter the elements:
0 0 3
1 0 1
2 1 0
The sparse of product matrix is:
3 3 7
0 0 18
0 1 9
0 2 6
1 0 1
1 2 1
2 0 4
2 1 2
Aim: Write a C++ program to convert an infix expression to postfix and evaluate
PROGRAM
#include"iostream.h"
#include"conio.h"
#include"stdio.h"
#include"ctype.h"
#include"string.h"
#include"process.h"
#include"math.h"
int top=-1;
int stack[50];
int p;
void evaluate(char [],int);
void display(char a[],int n)
{
int i;
for(i=0;i<=n;i++)
{
cout<< a[i];
}
cout<<"\n";
}
void inpst(char q[])
{
char stk[50],tp[50],op,ot;
int s=-1,p=-1,j,k,l,h,flg1,flg2;
char pcdn[6]={'-','+','/','*','^','\0'};
int pval[5]={1,1,2,2,3};
for(int i=0;q[i]!='\0';i++)
{
flg1=flg2=-1;
if(isalpha(q[i]))
{
p++;
tp[p]=q[i];
}
else if(q[i]=='(')
{
s++;
stk[s]=q[i];
}
else if(q[i]==')')
{
for(j=s;j>=0;j--)
{
if(stk[s]=='(')
break;
if(stk[j]!='(')
{
p++;
tp[p]=stk[j];
s--;
}
}
s--;
}
else
{
op=q[i];
flg1=-1;
/* to find precedence value */
for(h=0;pcdn[h]!='\0';h++)
{
if(op==pcdn[h])
{
flg1=pval[h];
break;
}
}
/* check for higher precedence operator */
for(k=s;k>=0;k--)
{
flg2=-1;
ot=stk[k];
for(h=0;pcdn[h]!='\0';h++)
{
if(ot==pcdn[h])
{
flg2=pval[h];
break;
}
}
if(flg2>flg1)
{
p++;
tp[p]=ot;
for(l=k;l
stk[k]=stk[k+1];
}
s--;
}
}
s++;
stk[s]=op;
}
}
while(s>=0)
{
p++;
tp[p]=stk[s];
s--;
}
cout<<"\n The post fix expression is: ";
display(tp,p);
evaluate(tp,p);
}
int result(int a,int b,char op)
{
int c=0;
switch(op)
{
case '+': c=a+b; break;
case '-': c=a-b; break;
case '*': c=a*b; break;
case '/': if(b!=0)
c=a/b;
else
{
cout<<"\n Error: ";
getch();
exit(0);
}
break;
case '^':c=(int)pow(a,b); break;
case '%':c=a%b; break;
}
return c;
}
void push(int item)
{
stack[++top]=item;
}
int pop()
{
int s;
if(top>=0)
{
s=stack[top];
top--;
return s;
}
else
return 0;
}
void evaluate(char post[],int p)
{
int a,b,v=0,q;
top=-1;
for(int i=0;i<=p;i++)
{
if(isalpha(post[i]))
{
cout<<"\n Enter value for "<< post[i]<<": ";
cin>>q;
push(q);
continue;
}
else
{
a=pop();
b=pop();
v=result(a,b,post[i]);
push(v);
}
a=b=0;
}
}
void main()
{
char q[50];
clrscr();
cout<<"\n Enter the infix expression: ";
gets(q);
inpst(q);
cout<<"\n Value of expression "<< stack[top];
getch();
}
OUTPUT
Enter the infix expression: a*b+c*d
The post fix expression is: ab*cd*+
Enter value for a: 2
Enter value for b: 3
Enter value for c: 4
Enter value for d: 5
Value of expression 26
Aim: Write a C++ program to implement stack operations
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
int stk[50],top=-1,i,j,max,num,ch;
void push()
{
top++;
cout<<"\n Enter the item: ";
cin>>num;
stk[top]=num;
}
void pop()
{
cout<<"\n Popped "<< stk[top];
top--;
}
void display()
{
cout<<"\n ---------------------\n";
cout<<"TOP>> ";
for(i=top;i>=0;i--)
cout<< stk[i]<<" ";
cout<<"\n ---------------------";
}
void main()
{
clrscr();
cout<<"\n Enter the limit: ";
cin>>max;
do
{
cout<<"\n\n STACK\n";
cout<<"\n1.Push\n2.Pop\n3.Display\n4.Exit";
cout<<"\n Enter the choice: ";
cin>>ch;
switch(ch)
{
case 1:if(top>=max-1)
{
cout<<"\n Stack full: ";
continue;
}
push();
break;
case 2:if(top==-1)
{
cout<<"\n Stack empty: ";
continue;
}
pop();
break;
case 3:display();
break;
case 4:cout<<".......Thanking you.......";
getch();
exit(0);
default:cout<<"\n INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
Enter the limit: 3
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 1
Enter the item: 23
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 1
Enter the item: 96
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 3
---------------------
TOP>> 96 56 23
---------------------
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 2
Popped 96
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 3
---------------------
TOP>> 56 23
---------------------
STACK
1.Push
2.Pop
3.Display
4.Exit
Enter the choice: 4
.......Thanking you.......
Aim: Write a C++ program to reverse a string using stack
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
#include"string.h"
void revstk(char str[])
{
char stk[50];
int top,i;
for(i=0;str[i]!='\0';i++)
stk[i]=str[i];
top=--i;
cout<<"\n Reversed string: ";
for(i=top;i>=0;i--)
cout<< stk[i];
return;
}
void main()
{
char str[50];
clrscr();
cout<<"\n Enter a string:";
gets(str);
revstk(str);
getch();
}
OUTPUT
Enter a string:english
Reversed string: hsilgne
Aim: Write a C++ program to implement simple queue operations
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
int que[50],rear=-1,front=-1,i,j,max,num,ch;
void insert()
{
rear++;
cout<<"\n Enter the item: ";
cin>>num;
que[rear]=num;
if(front==-1)
front=0;
}
void delet()
{
cout<<"\n Deleted "<< que[front];
if(front==rear)
front=rear=-1;
else
front++;
}
void display()
{
if(front==-1)
{
cout<<"\n\t\t\t QUEUE EMPTY ";
return;
}
cout<<"\n -----------------------------\n";
cout<<"FRONT>> ";
for(i=front;i<=rear;i++)
cout<< que[i]<<" ";
cout<<" << REAR";
cout<<"\n -----------------------------";
}
void main()
{
clrscr();
cout<<"\n Enter the limit: ";
cin>>max;
do
{
cout<<"\n\n SIMPLE QUEUE\n";
cout<<"\n1.Insert\n2.Delete\n3.Display\n4.Exit";
cout<<"\n Enter the choice: ";
cin>>ch;
switch(ch)
{
case 1:if(rear+1>max-1)
{
cout<<"\n\t\t\t Queue full: ";
continue;
}
insert();
break;
case 2:if(front==-1||front>rear)
{
cout<<"\n\t\t\t Queue empty: ";
continue;
}
delet();
break;
case 3:display();
break;
case 4:cout<<".......Thanking you.......";
getch();
exit(0);
default:cout<<"\n\t\t\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
Enter the limit: 2
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 23
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 96
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> 23 96 << REAR
-----------------------------
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 2
Deleted 23
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> 96 << REAR
-----------------------------
SIMPLE QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 4
.......Thanking you.......
Aim: Write a C++ program to implement circular queue operations
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
int que[50],rear=-1,front=-1,i,j,max,num,ch;
void insert()
{
rear=(rear+1)%max;
cout<<"\n Enter the item: ";
cin>>num;
que[rear]=num;
if(front==-1)
front=0;
}
void delet()
{
cout<<"\n Deleted "<< que[front];
if(front==rear)
front=rear=-1;
else
front=(front+1)%max;
}
void display()
{
if(front==-1)
{
cout<<"\n QUEUE EMPTY ";
return;
}
cout<<"\n -----------------------------\n";
cout<<"FRONT>> ";
if(rear< front)
{
for(i=front;i< max;i++)
cout<< que[i]<<" ";
for(i=0;i<=rear;i++)
cout<< que[i]<<" ";
}
else
for(i=front;i<=rear;i++)
cout<< que[i]<<" ";
cout<<" << REAR";
cout<<"\n -----------------------------";
}
void main()
{
clrscr();
cout<<"\n Enter the limit: ";
cin>>max;
do
{
cout<<"\n\n CIRCULAR QUEUE\n";
cout<<"\n1.Insert\n2.Delete\n3.Display\n4.Exit";
cout<<"\n Enter the choice: ";
cin>>ch;
switch(ch)
{
case 1:if((front==(rear+1)%max))
{
cout<<"\n Queue full: ";
continue;
}
insert();
break;
case 2:if(front==-1)
{
cout<<"\n Queue empty: ";
continue;
}
delet();
break;
case 3:display();
break;
case 4:cout<<".......Thanking you.......";
getch();
exit(0);
default:cout<<"\n INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
Enter the limit: 2
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 44
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 56
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> 44 56 << REAR
-----------------------------
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 2
Deleted 44
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 99
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> 56 99 << REAR
-----------------------------
CIRCULAR QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 4
.......Thanking you.......
Aim: Write a C++ program to implement double ended queue operations
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
int que[50],rear=-1,front=-1,i,j,max,num,ch;
void r_insert()
{
rear++;
cout<<"\n Enter the item: ";
cin>>num;
que[rear]=num;
if(front==-1)
front=0;
}
void f_insert()
{
if(front==-1)
front=rear=0;
else if(front>0)
front--;
cout<<"\n Enter the item: ";
cin>>num;
que[front]=num;
}
void r_delet()
{
cout<<"\n Deleted "<< que[rear];
if(front==rear)
front=rear=-1;
else
rear--;
}
void f_delet()
{
cout<<"\n Deleted "<< que[front];
if(front==rear)
front=rear=-1;
else
front++;
}
void display()
{
if(front==-1)
{
cout<<"\n\t\t\t QUEUE EMPTY ";
return;
}
cout<<"\n -----------------------------\n";
cout<<"FRONT>> ";
for(i=front;i<=rear;i++)
cout<< que[i]<<" ";
cout<<" << REAR";
cout<<"\n -----------------------------";
}
void main()
{
clrscr();
cout<<"\n Enter the limit: ";
cin>>max;
do
{
cout<<"\n\n DE-QUEUE\n";
cout<<"\n1.Insert at rear\n2.Insert at front\n3.Delete at front\n4.Delete at rear\n5.Display\n6.Exit";
cout<<"\n Enter the choice: ";
cin>>ch;
switch(ch)
{
case 1:if(rear+1>max-1)
{
cout<<"\n\t\t\t Queue full: ";
continue;
}
r_insert();
break;
case 2:if(front==0)
{
cout<<"\n\t\t\t Cannot insert: ";
continue;
}
f_insert();
break;
case 3:if(front==-1||front>rear)
{
cout<<"\n\t\t\t Queue empty: ";
continue;
}
f_delet();
break;
case 4:if(front==-1||front>rear)
{
cout<<"\n\t\t\t Queue empty: ";
continue;
}
r_delet();
break;
case 5:display();
break;
case 6:cout<<".......Thanking you.......";
getch();
exit(0);
default:cout<<"\n\t\t\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
Enter the limit: 3
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 2
Enter the item: 23
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 1
Enter the item: 44
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 1
Enter the item: 96
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 5
-----------------------------
FRONT>> 23 44 96 << REAR
-----------------------------
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 3
Deleted 23
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 4
Deleted 96
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 5
-----------------------------
FRONT>> 44 << REAR
-----------------------------
DE-QUEUE
1.Insert at rear
2.Insert at front
3.Delete at front
4.Delete at rear
5.Display
6.Exit
Enter the choice: 6
.......Thanking you.......
Aim: Write a C++ program to implement priority queue operations
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
int que[50],rear=-1,front=-1,i,j,max,item,ch;
struct p_que
{
int num;
int pr;
};
class pro
{
public:
void insert(p_que ob[]);
void delet(p_que ob[]);
void display(p_que ob[]);
};
void pro::insert(p_que ob[])
{
rear++;
cout<<"\n Enter the item: ";
cin>>item;
ob[rear].num=item;
cout<<"\n Enter the priority: ";
cin>>ob[rear].pr;
if(front==-1)
front=0;
}
void pro::delet(p_que ob[])
{
p_que temp;
int big=ob[front].pr;
int p=0;
for(int i=front+1;i<=rear;i++)
{
if(ob[i].pr>big)
{
big=ob[i].pr;
p=i;
}
}
for(i=p;i<=rear;i++)
{
ob[i].num=ob[i+1].num;
ob[i].pr=ob[i+1].pr;
}
if(front==rear)
front=rear=-1;
else
rear--;
}
void pro::display(p_que ob[])
{
if(front==-1)
{
cout<<"\n\t\t\t QUEUE EMPTY ";
return;
}
cout<<"\n -----------------------------\n\n";
cout<<"FRONT>> Pr ";
for(i=front;i<=rear;i++)
printf("%3d",ob[i].pr);
cout<<" << REAR";
cout<<"\n\n Data";
for(i=front;i<=rear;i++)
printf("%3d",ob[i].num);
cout<<"\n -----------------------------";
}
void main()
{
p_que o[50];
pro pp;
clrscr();
cout<<"\n Enter the limit: ";
cin>>max;
do
{
cout<<"\n\n PRIORITY QUEUE\n";
cout<<"\n1.Insert\n2.Delete\n3.Display\n4.Exit";
cout<<"\n Enter the choice: ";
cin>>ch;
switch(ch)
{
case 1:if(rear+1>max-1)
{
cout<<"\n\t\t\t Queue full: ";
continue;
}
pp.insert(o);
break;
case 2:if(front==-1||front>rear)
{
cout<<"\n\t\t\t Queue empty: ";
continue;
}
pp.delet(o);
break;
case 3:pp.display(o);
break;
case 4:cout<<".......Thanking you.......";
getch();
exit(0);
default:cout<<"\n\t\t\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
Enter the limit: 3
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 23
Enter the priority: 5
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 44
Enter the priority: 6
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 1
Enter the item: 96
Enter the priority: 7
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> Pr 5 6 7 << REAR
Data 23 44 96
-----------------------------
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 2
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 3
-----------------------------
FRONT>> Pr 5 6 << REAR
Data 23 44
-----------------------------
PRIORITY QUEUE
1.Insert
2.Delete
3.Display
4.Exit
Enter the choice: 4
.......Thanking you.......
Aim: Write a C++ program to represent a polynomial
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class poly
{
int i,n;
struct rep
{
int co;
int ex;
}r[10];
public:
void read();
void disp();
};
void poly::read()
{
cout<<"\n Enter the number of terms in the polynomial: ";
cin>>n;
cout<<"\n Enter the coefficient and exponent: ";
for(i=0;i< n;i++)
{
cout<<"\n Term "<< i+1<<": ";
cin>>r[i].co>>r[i].ex;
}
}
void poly::disp()
{
cout<<"\nThe polynomial is:\n\n";
for(i=0;i< n-1;i++)
{
cout<< r[i].co<<"x^"<< r[i].ex<<"+";
}
cout<< r[i].co<<"x^"<< r[i].ex;
}
void main()
{
clrscr();
poly ob;
ob.read();
ob.disp();
getch();
}
OUTPUT
Enter the number of terms in the polynomial: 3
Enter the coefficient and exponent:
Term 1: 5 2
Term 2: 6 1
Term 3: 7 0
The polynomial is:
5x^2+6x^1+7x^0
Aim: Write a C++ program to perform polynomial addition
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class poly
{
int i,n;
struct rep
{
int co;
int ex;
}r[10];
public:
void read();
void sum(poly,poly);
void disp();
};
void poly::read()
{
cout<<"\n Enter the number of terms in the polynomial: ";
cin>>n;
cout<<"\n Enter the coefficient and exponent: ";
for(i=0;i< n;i++)
{
cout<<"\n Term "<< i+1<<": ";
cin>>r[i].co>>r[i].ex;
}
}
void poly::disp()
{
cout<<"\n.........................\n";
for(i=0;i< n-1;i++)
{
cout<< r[i].co<<"x^"<< r[i].ex<<"+";
}
cout<< r[i].co<<"x^"<< r[i].ex;
cout<<"\n\n";
}
void poly::sum(poly c1,poly c2)
{
int i=0,j=0,k=0,t;
while(i< c1.n&&j< c2.n)
{//1
if(c1.r[i].ex==c2.r[j].ex)
{
r[k].co=c1.r[i].co+c2.r[j].co;
r[k].ex=c1.r[i].ex;
i++,j++,k++;
}
else if(c1.r[i].ex>c2.r[j].ex)
{
r[k].co=c1.r[i].co;
r[k].ex=c1.r[i].ex;
i++,k++;
}
else if(c1.r[i].ex< c2.r[j].ex)
{
r[k].co=c2.r[j].co;
r[k].ex=c2.r[j].ex;
j++,k++;
}
}//1
while(i< c1.n)
{
r[k].co=c1.r[i].co;
r[k].ex=c1.r[i].ex;
i++,k++;
}
while(j< c2.n)
{
r[k].co=c2.r[j].co;
r[k].ex=c2.r[j].ex;
j++,k++;
}
n=k--;
}
void main()
{
clrscr();
poly c1,c2,c3;
c1.read();
c2.read();
cout<<"\n Polynomial 1: ";
c1.disp();
cout<<"\n Polynomial 2: ";
c2.disp();
c3.sum(c1,c2);
cout<<"\n Sum polynomial : ";
c3.disp();
getch();
}
OUTPUT
Enter the number of terms in the polynomial: 3
Enter the coefficient and exponent:
Term 1: 4 2
Term 2: 5 1
Term 3: 3 0
Enter the number of terms in the polynomial: 2
Enter the coefficient and exponent:
Term 1: 8 3
Term 2: 5 1
Polynomial 1:
.........................
4x^2+5x^1+3x^0
Polynomial 2:
.........................
8x^3+5x^1
Sum polynomial :
.........................
8x^3+4x^2+10x^1+3x^0
Aim: Write a C++ program to implement a singly linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
public:
void display();
void insertend();
void insertbeg();
void insertsp();
void delbeg();
void delend();
void delsp();
};
node *head,*temp,*start,*t;
void node::display()
{
temp=start;
cout<<"\n Data list: ";
while(temp!=NULL)
{
cout<< temp->data<<" ";
temp=temp->next;
}
}
void node::insertbeg()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
if(start==NULL)
{
head->next=NULL;
start=head;
}
else
{
head->next=start;
start=head;
}
}
void node::insertend()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
if(start==NULL)
{
start=head;
}
else
{
temp=start;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=head;
head->next=NULL;
}
}
void node::insertsp()
{
int pos,i;
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
cout<<"\n Enter the position: ";
cin>>pos;
if(pos==1)
insertbeg();
else
{
temp=start;
for(i=1;i< pos-1;i++)
{
temp=temp->next;
}
head->next=temp->next;
temp->next=head;
}
}
void node::delbeg()
{
if(start==NULL)
cout<<"\n LIST EMPTY ";
else
{
//temp=start;
cout<< start->data;
start=start->next;
delete temp;
}
}
void node::delend()
{
temp=start;
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(temp->next==NULL)
{
cout<< temp->data;
start=NULL;
delete temp;
}
else
{
while(temp->next!=NULL)
{
t=temp;
temp=temp->next;
}
cout<< temp->data;
t->next=NULL;
delete temp;
}
}
void node::delsp()
{
if(start==NULL)
{
cout<<"\n LIST EMPTY ";
return;
}
int num;
cout<<"\n Enter the item: ";
cin>>num;
temp=start;
while(temp!=NULL)
{
if(temp->data==num)
{
if(temp==start)
delbeg();
else
{
cout<< temp->data;
t->next=temp->next;
delete temp;
}
}
else
{
t=temp;
temp=temp->next;
}
}
}
void main()
{
int ch;
node ob;
start=NULL;
clrscr();
do
{
//clrscr();
cout<<"\n\n\t...SINGLY LINKED LIST...\n";
cout<<"\n1.INSERT AT BEGINNING\n2.INSERT AT END\n3.INSERT AT A SPECIFIED POSITION";
cout<<"\n4.DELETION FROM BEGINNING\n5.DELETION FROM END\n6.DELETION FROM A SPECIFIED POSITION";
cout<<"\n7.DISPLAY\n8.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insertbeg();break;
case 2:ob.insertend();break;
case 3:ob.insertsp();break;
case 4:ob.delbeg();break;
case 5:ob.delend();break;
case 6:ob.delsp();break;
case 7:ob.display();break;
case 8:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 23
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 44
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 2
Enter the data: 56
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 3
Enter the data: 99
Enter the position: 2
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 44 99 23 56
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 4
44
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 5
56
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 6
Enter the item: 23
23
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 99
...SINGLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 8
....THANKS....
Aim: Write a C++ program to implement a circular linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
#define MAX 25
class node
{
int data;
node *next;
public:
void display();
void insertend();
void insertbeg();
void insertsp();
void delbeg();
void delend();
void delsp();
};
node *head,*temp,*start,*t,*last;
void node::display()
{
temp=start;
cout<<"\n Data list: ";
while(temp!=last)
{
cout<< temp->data<<" ";
temp=temp->next;
}
cout<< last->data;
}
void node::insertbeg()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
if(start==NULL)
{
start=last=head;
last->next=NULL;
}
else
{
head->next=start;
last->next=head;
start=head;
}
}
void node::insertend()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
if(start==NULL)
{
start=last=head;
last->next=head;
}
else
{
last->next=head;
head->next=start;
last=head;
}
}
void node::insertsp()
{
int pos,i;
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
cout<<"\n Enter the position: ";
cin>>pos;
if(pos==1)
{
insertbeg();
return;
}
else
{
temp=start;
for(i=1;i< pos-1;i++)
{
temp=temp->next;
}
head->next=temp->next;
temp->next=head;
}
}
void node::delbeg()
{
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(start->next==start)
{
temp=start;
cout<< temp->data;
start=last=NULL;
delete temp;
}
else
{
temp=start;
cout<< start->data;
start=start->next;
last->next=start;
delete temp;
}
}
void node::delend()
{
temp=start;
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(start->next==start)
{
temp=start;
cout<< temp->data;
start=last=NULL;
delete temp;
}
else
{
temp=start;
if(temp->next!=last)
{
temp=temp->next;
}
t=last;
cout<< t->data;
temp->next=start;
last=temp;
delete t;
}
}
void node::delsp()
{
if(start==NULL)
{
cout<<"\n LIST EMPTY ";
return;
}
int item;
cout<<"\n Enter the item: ";
cin>>item;
int i=0;
for(temp=start;i< MAX;i++,t=temp,temp=temp->next)
{
if(temp->data==item)
{
if(temp==start)
{
delbeg();
return;
}
else if(temp==last)
{
delend();
return;
}
else
{
t->next=temp->next;
delete temp;
return;
}
}
}
}
void main()
{
int ch;
node ob;
start=last=NULL;
clrscr();
do
{
cout<<"\n\n\t...CIRCULAR LINKED LIST...\n";
cout<<"\n1.INSERT AT BEGINNING\n2.INSERT AT END\n3.INSERT AT A SPECIFIED POSITION";
cout<<"\n4.DELETION FROM BEGINNING\n5.DELETION FROM END\n6.DELETION FROM A SPECIFIED POSITION";
cout<<"\n7.DISPLAY\n8.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insertbeg();break;
case 2:ob.insertend();break;
case 3:ob.insertsp();break;
case 4:ob.delbeg();break;
case 5:ob.delend();break;
case 6:ob.delsp();break;
case 7:ob.display();break;
case 8:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 25
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 47
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 2
Enter the data: 58
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 3
Enter the data: 101
Enter the position: 2
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 47 101 25 58
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 4
47
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 5
58
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 6
Enter the item: 25
25
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 101
...CIRCULAR LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 8
....THANKS....
Aim: Write a C++ program to implement a doubly linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
node *prev;
public:
void display();
void insertend();
void insertbeg();
void insertsp();
void delbeg();
void delend();
void delsp();
};
node *head,*temp,*start,*last,*t,*t1,*t2;
void node::display()
{
temp=start;
if(start==NULL)
{
cout<<"\n LIST EMPTY ";
return;
}
cout<<"\n Data list: ";
while(temp!=last)
{
cout<< temp->data<<" ";
temp=temp->next;
}
cout<< last->data;
}
void node::insertbeg()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
head->prev=NULL;
if(start==NULL)
{
head->next=NULL;
start=last=head;
}
else
{
head->next=start;
start->prev=head;
start=head;
}
}
void node::insertend()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
head->next=NULL;
if(start==NULL)
{
start=last=head;
head->prev=NULL;
}
else
{
head->prev=last;
last->next=head;
last=head;
}
}
void node::insertsp()
{
int pos,i;
head=new node;
cout<<"\n Enter the position: ";
cin>>pos;
if(pos==1)
insertbeg();
else
{
cout<<"\n Enter the data: ";
cin>>head->data;
temp=start;
for(i=1;i< pos-1;i++)
{
temp=temp->next;
}
if(temp->next==NULL)
last=head;
head->next=temp->next;
temp->next=head;
}
}
void node::delbeg()
{
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(start==last)
{
cout<< start->data;
temp=start;
start=last=NULL;
delete temp;
}
else
{
temp=start;
cout<< start->data;
start=start->next;
start->prev=NULL;
delete temp;
}
}
void node::delend()
{
temp=start;
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(start==last)
{
cout<< last->data;
temp=last;
start=last=NULL;
delete temp;
}
else
{
temp=last;
cout<< last->data;
last=last->prev;
last->next=NULL;
delete temp;
}
}
void node::delsp()
{
if(start==NULL)
{
cout<<"\n LIST EMPTY ";
return;
}
int num;
cout<<"\n Enter the item: ";
cin>>num;
temp=start;
while(temp!=NULL)
{
if(temp->data==num)
{
if(temp==start)
{
delbeg();
return;
}
else if(temp==last)
{
delend();
return;
}
else
{
cout<< temp->data;
t1=temp->prev;
t2=temp->next;
t1->next=t2;
t2->prev=t1;
delete temp;
}
}
else
{
temp=temp->next;
}
}
}
void main()
{
int ch;
node ob;
start=last=NULL;
clrscr();
do
{
cout<<"\n\t...DOUBLY LINKED LIST...\n";
cout<<"\n1.INSERT AT BEGINNING\n2.INSERT AT END\n3.INSERT AT A SPECIFIED
POSITION";
cout<<"\n4.DELETION FROM BEGINNING\n5.DELETION FROM END\n6.DELETION
FROM A SPECIFIED POSITION";
cout<<"\n7.DISPLAY\n8.EXIT\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insertbeg();break;
case 2:ob.insertend();break;
case 3:ob.insertsp();break;
case 4:ob.delbeg();break;
case 5:ob.delend();break;
case 6:ob.delsp();break;
case 7:ob.display();break;
case 8:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 45
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 25
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 2
Enter the data: 96
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 3
Enter the position: 3
Enter the data: 56
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 25 45 56 96
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 4
25
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 5
96
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 6
Enter the item: 56
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 45
...DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 8
....THANKS....
Aim: Write a C++ program to implement a circular doubly linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
node *prev;
public:
node(){}
void create();
void display();
void insertend();
void insertbeg();
void insertsp();
void delbeg();
void delend();
void delsp();
};
node *temp,*t,*curr,*t1,*t2;
static node *head;
void node::create()
{
head=new node;
head->data=0;
head->next=head;
head->prev=head;
}
void node::display()
{
if(head->next==head)
cout<<"\n DATA LIST EMPTY ";
else
{
temp=head;
cout<<"\n Data list: ";
while(temp->next!=head)
{
temp=temp->next;
cout<< temp->data<<" ";
}
}
}
void node::insertbeg()
{
curr=new node;
cout<<"\n Enter the data: ";
cin>>curr->data;
if(head->next==head)
{
head->next=curr;
curr->prev=head;
head->prev=curr;
curr->next=head;
return;
}
temp=head->next;
curr->prev=head;
head->next=curr;
curr->next=temp;
temp->prev=curr;
}
void node::insertend()
{
curr=new node;
cout<<"\n Enter the data: ";
cin>>curr->data;
temp=head->prev;
curr->next=head;
head->prev=curr;
curr->prev=temp;
temp->next=curr;
}
void node::insertsp()
{
int pos,k;
cout<<"\n Enter the position: ";
cin>>pos;
temp=head;
if(pos==1)
insertbeg();
else
{
for(k=1;k< pos;k++)
{
temp=temp->next;
}
curr=new node;
cout<<"\n Enter the data: ";
cin>>curr->data;
t=temp->next;
temp->next=curr;
curr->prev=temp;
curr->next=t;
t->prev=curr;
}
}
void node::delbeg()
{
if(head->next==head)
cout<<"\n DELETION IMPOSSIBLE ";
else
{
temp=head->next;
cout<< temp->data;
t=head->next=temp->next;
t->prev=head;
delete temp;
}
}
void node::delend()
{
if(head->prev==head)
cout<<"\n DELETION IMPOSSIBLE ";
else
{
temp=head->prev;
cout<< temp->data;
t=head->prev=temp->prev;
t->next=head;
delete temp;
}
}
void node::delsp()
{
if(head->next==head)
{
cout<<"\n DELETION IMPOSSIBLE ";
return;
}
else
{
int item;
cout<<"\n Enter the item: ";
cin>>item;
temp=head;
do
{
if(temp->data==item)
{
if(temp->prev==head)
{
delbeg();
return;
}
else if(temp->next==head)
{
delend();
return;
}
else
{
t1=temp->prev;
t2=temp->next;
t1->next=t2;
t2->prev=t1;
delete temp;
return;
}
}
else
{
temp=temp->next;
}
}while(temp!=head);
}
}
void main()
{
int ch;
node ob;
clrscr();
ob.create();
do
{
cout<<"\n\n\t...CIRCULAR DOUBLY LINKED LIST...\n";
cout<<"\n1.INSERT AT BEGINNING\n2.INSERT AT END\n3.INSERT AT A SPECIFIED POSITION";
cout<<"\n4.DELETION FROM BEGINNING\n5.DELETION FROM END\n6.DELETION FROM A SPECIFIED POSITION";
cout<<"\n7.DISPLAY\n8.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insertbeg();break;
case 2:ob.insertend();break;
case 3:ob.insertsp();break;
case 4:ob.delbeg();break;
case 5:ob.delend();break;
case 6:ob.delsp();break;
case 7:ob.display();break;
case 8:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 21
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 1
Enter the data: 41
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 2
Enter the data: 51
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 3
Enter the position: 2
Enter the data: 91
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 41 91 21 51
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 4
41
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 5
51
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 6
Enter the item: 21
21
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 7
Data list: 91
...CIRCULAR DOUBLY LINKED LIST...
1.INSERT AT BEGINNING
2.INSERT AT END
3.INSERT AT A SPECIFIED POSITION
4.DELETION FROM BEGINNING
5.DELETION FROM END
6.DELETION FROM A SPECIFIED POSITION
7.DISPLAY
8.EXIT
Enter your choice: 8
....THANKS....
Aim: Write a C++ program to implement a stack using linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
public:
void display();
void push();
void pop();
};
node *head,*temp,*start,*t;
void node::display()
{
temp=start;
if(temp==NULL)
cout<<"\n STACK EMPTY ";
else
cout<<"\n STACK: ";
while(temp!=NULL)
{
cout<< temp->data<<" ";
temp=temp->next;
}
}
void node::push()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
head->next=NULL;
if(start==NULL)
{
start=head;
}
else
{
temp=start;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=head;
}
}
void node::pop()
{
temp=start;
if(start==NULL)
cout<<"\n STACK EMPTY ";
else if(temp->next==NULL)
{
cout<< temp->data;
start=NULL;
delete temp;
}
else
{
while(temp->next!=NULL)
{
t=temp;
temp=temp->next;
}
cout<< temp->data;
t->next=NULL;
delete temp;
}
}
void main()
{
int ch;
node ob;
start=NULL;
clrscr();
do
{
cout<<"\n\n\t...STACK USING LINKED LIST...\n";
cout<<"\n1.PUSH\n2.POP\n3.DISPLAY\n4.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.push();break;
case 2:ob.pop();break;
case 3:ob.display();break;
case 4:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 23
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 45
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 3
STACK: 23 45
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 2
45
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 3
STACK: 23
...STACK USING LINKED LIST...
1.PUSH
2.POP
3.DISPLAY
4.EXIT
Enter your choice: 4
....THANKS....
Aim: Write a C++ program to implement a simple queue using linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
public:
void display();
void insert();
void del();
};
node *head,*temp,*start,*t;
void node::display()
{
temp=start;
if(temp==NULL)
cout<<"\n QUEUE EMPTY ";
else
cout<<"\n QUEUE: ";
while(temp!=NULL)
{
cout<< temp->data<<" ";
temp=temp->next;
}
}
void node::insert()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
head->next=NULL;
if(start==NULL)
{
start=head;
}
else
{
temp=start;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=head;
}
}
void node::del()
{
if(start==NULL)
cout<<"\n QUEUE EMPTY ";
else
{
temp=start;
cout<< start->data;
start=start->next;
delete temp;
}
}
void main()
{
int ch;
node ob;
start=NULL;
clrscr();
do
{
cout<<"\n\t...QUEUE USING LINKED LIST...\n";
cout<<"\n1.INSERTION\n2.DELETION\n3.DISPLAY\n4.EXIT\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insert();break;
case 2:ob.del();break;
case 3:ob.display();break;
case 4:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 25
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 50
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
QUEUE: 25 50
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 2
25
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
QUEUE: 50
...QUEUE USING LINKED LIST...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 4
....THANKS....
Aim: Write a C++ program to implement a circular queue using linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
node *next;
public:
node(){}
void display();
void insert();
void del();
};
node *head,*temp,*start,*t,*last;
void node::display()
{
temp=start;
cout<<"\n Data list: ";
while(temp!=last)
{
cout<< temp->data<<" ";
temp=temp->next;
}
cout<< last->data;
}
void node::insert()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
if(start==NULL)
{
start=last=head;
last->next=head;
}
else
{
last->next=head;
head->next=start;
last=head;
}
}
void node::del()
{
if(start==NULL)
cout<<"\n LIST EMPTY ";
else if(start->next==start)
{
temp=start;
cout<< temp->data;
start=last=NULL;
delete temp;
}
else
{
temp=start;
cout<< start->data;
start=start->next;
last->next=start;
delete temp;
}
}
void main()
{
int ch;
node ob;
start=last=NULL;
clrscr();
do
{
cout<<"\n\n\t...CIRCULAR QUEUE USING LL...\n";
cout<<"\n1.INSERTION\n2.DELETION\n3.DISPLAY\n4.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insert();break;
case 2:ob.del();break;
case 3:ob.display();break;
case 4:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 23
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 44
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
Data list: 23 44
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 2
23
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
Data list: 44
...CIRCULAR QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 4
....THANKS....
Aim: Write a C++ program to implement a priority queue using linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
class node
{
int data;
int prty;
node *next;
public:
void display();
void insert();
void del();
void delbeg();
};
node *head,*temp,*start,*t;
void node::display()
{
temp=start;
cout<<"\n Data list: ";
while(temp!=NULL)
{
printf("%3d ",temp->data);
temp=temp->next;
}
temp=start;
cout<<"\n Priority: ";
while(temp!=NULL)
{
printf("%3d ",temp->prty);
temp=temp->next;
}
}
void node::insert()
{
head=new node;
cout<<"\n Enter the data: ";
cin>>head->data;
cout<<"\n Enter the priority: ";
cin>>head->prty;
head->next=NULL;
if(start==NULL)
{
start=head;
}
else
{
temp=start;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next=head;
}
}
void node::delbeg()
{
if(start==NULL)
cout<<"\n LIST EMPTY ";
else
{
cout<< start->data;
start=start->next;
delete temp;
}
}
void node::del()
{
if(start==NULL)
{
cout<<"\n LIST EMPTY ";
return;
}
int lp;
temp=start;
lp=temp->prty;
while(temp!=NULL)
{
if(temp->prty>lp)
{
lp=temp->prty;
}
temp=temp->next;
}
temp=start;
while(temp!=NULL)
{
if(temp->prty==lp)
{
if(temp==start)
{
delbeg();
return;
}
else
{
cout<< temp->data;
t->next=temp->next;
delete temp;
return;
}
}
else
{
t=temp;
temp=temp->next;
}
}
}
void main()
{
int ch;
node ob;
start=NULL;
clrscr();
do
{
cout<<"\n\n\t...PRIORITY QUEUE USING LL...\n";
cout<<"\n1.INSERTION\n2.DELETION\n3.DISPLAY\n4.EXIT\n\n";
cout<<"\n Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:ob.insert();break;
case 2:ob.del();break;
case 3:ob.display();break;
case 4:cout<<"\n\t ....THANKS....";
getch();
exit(0);
default:cout<<"\n\t INVALID KEY-IN ";
}
}while(1);
}
OUTPUT
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 23
Enter the priority: 5
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 1
Enter the data: 96
Enter the priority: 6
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
Data list: 23 96
Priority: 5 6
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 2
96
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 3
Data list: 23
Priority: 5
...PRIORITY QUEUE USING LL...
1.INSERTION
2.DELETION
3.DISPLAY
4.EXIT
Enter your choice: 4
....THANKS....
Aim: Write a C++ program to perform polynomial addition using linked list
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
struct node
{
int co,exp;
node *next;
};
class poly
{
node *start,*temp,*head;
public:
poly()
{
start=NULL;
}
void create();
void display();
void add(poly,poly);
};
void poly::create()
{
int n;
do
{
head=new node;
cout<<"\n Enter values for coefficient and exponent: ";
cin>>head->co>>head->exp;
head->next=NULL;
if(head->co==0)
goto PROCEED;
else if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
PROCEED:
cout<<"\n Continue? ,then press \"1\":";
cin>>n;
}while(n==1);
}
void poly::display()
{
temp=start;
cout<<"\n\n........................................\n\n\n\t";
while(temp->next!=NULL)
{
cout<< temp->co<<"x^"<< temp->exp<<"+";
temp=temp->next;
}
cout<< temp->co<<"x^"<< temp->exp;
cout<<"\n\n........................................\n";
}
void poly::add(poly r1,poly r2)
{
r1.temp=r1.start;
r2.temp=r2.start;
while(r1.temp!=NULL&&r2.temp!=NULL)
{
if(r1.temp->exp>r2.temp->exp)
{
head=new node;
head->co=r1.temp->co;
head->exp=r1.temp->exp;
head->next=NULL;
if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
r1.temp=r1.temp->next;
}
else if(r1.temp->exp
{
head=new node;
head->co=r2.temp->co;
head->exp=r2.temp->exp;
head->next=NULL;
if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
r2.temp=r2.temp->next;
}
else
{
head=new node;
head->co=r1.temp->co+r2.temp->co;
head->exp=r1.temp->exp;
head->next=NULL;
if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
r1.temp=r1.temp->next;
r2.temp=r2.temp->next;
}
}
while(r1.temp!=NULL)
{
head=new node;
head->co=r1.temp->co;
head->exp=r1.temp->exp;
head->next=NULL;
if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
r1.temp=r1.temp->next;
}
while(r2.temp!=NULL)
{
head=new node;
head->co=r2.temp->co;
head->exp=r2.temp->exp;
head->next=NULL;
if(start==NULL)
start=temp=head;
else
{
temp->next=head;
temp=head;
}
r2.temp=r2.temp->next;
}
}
void main()
{
poly p1,p2,p3;
clrscr();
cout<<"\n First polynomial...";
p1.create();
cout<<"\n Second polynomial...";
p2.create();
p3.add(p1,p2);
cout<<"\n Result of addition: ";
p3.display();
getch();
}
OUTPUT
First polynomial...
Enter values for coefficient and exponent: 4 3
Continue? ,then press "1":1
Enter values for coefficient and exponent: 5 2
Continue? ,then press "1":1
Enter values for coefficient and exponent: 3 1
Continue? ,then press "1":1
Enter values for coefficient and exponent: 6 0
Continue? ,then press "1":0
Second polynomial...
Enter values for coefficient and exponent: 3 3
Continue? ,then press "1":1
Enter values for coefficient and exponent: 2 2
Continue? ,then press "1":1
Enter values for coefficient and exponent: 3 1
Continue? ,then press "1":1
Enter values for coefficient and exponent: 1 0
Continue? ,then press "1":0
Result of addition:
. . . . . . . . . . . . . . . . .
7x^3+7x^2+6x^1+7x^0
. . . . . . . . . . . . . . . . .
Aim: Write a C++ program to implement a binary tree
PROGRAM
#include
#include
#include
struct node
{
char data;
node *lchild,*rchild;
};
node *head;
class tree
{
node *root;
public:
tree()
{
root=NULL;
}
node * read();
node * makenode(char);
void createtree(node *);
void inorder(node *);
void preorder(node *);
void postorder(node *);
};
node * tree::read()
{
char item;
cout<<"\n Enter data: ";
cin>>item;
root=makenode(item);
createtree(root);
return root;
}
node * tree::makenode(char x)
{
head=new node;
head->data=x;
head->lchild=head->rchild=NULL;
return head;
}
void tree::createtree(node *root)
{
int ch;
char item;
if(root!=NULL)
{
cout<<"\n Create left child for "<< root->data<<" (if so press \"1\")";
cin>>ch;
if(ch==1)
{
cout<<"\n Enter data: ";
cin>>item;
root->lchild=makenode(item);
createtree(root->lchild);
}
cout<<"\n Create right child for "<< root->data<<" (if so press \"1\")";
cin>>ch;
if(ch==1)
{
cout<<"\n Enter data: ";
cin>>item;
root->rchild=makenode(item);
createtree(root->rchild);
}
}
}
void tree::inorder(node *root)
{
if(root!=NULL)
{
inorder(root->lchild);
cout<< root->data<<" ";
inorder(root->rchild);
}
}
void tree::preorder(node *root)
{
if(root!=NULL)
{
cout<< root->data<<" ";
preorder(root->lchild);
preorder(root->rchild);
}
}
void tree::postorder(node *root)
{
if(root!=NULL)
{
postorder(root->lchild);
postorder(root->rchild);
cout<< root->data<<" ";
}
}
void main()
{
tree ob;
node *root;
int ch;
clrscr();
do
{
cout<<"\n\n.... BINARY TREE ....\n\n";
cout<<"\n1.Creation\n2.Inorder Traversal\n3.Preorder Traversal";
cout<<"\n4.Postorder Traversal\n5.Exit";
cout<<"\n\t Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1:root=ob.read();
break;
case 2:ob.inorder(root);
break;
case 3:ob.preorder(root);
break;
case 4:ob.postorder(root);
break;
case 5:cout<<"\n\n\t... Thanking You ...";
getch();
exit(0);
default:cout<<"\n Invalid key-in ";
}
}while(1);
}
OUTPUT
.... BINARY TREE ....
1.Creation
2.Inorder Traversal
3.Preorder Traversal
4.Postorder Traversal
5.Exit
Enter your choice: 1
Enter data: A
Create left child for A (if so press "1")1
Enter data: B
Create left child for B (if so press "1")1
Enter data: C
Create left child for C (if so press "1")0
Create right child for C (if so press "1")0
Create right child for B (if so press "1")1
Enter data: D
Create left child for D (if so press "1")0
Create right child for D (if so press "1")0
Create right child for A (if so press "1")1
Enter data: E
Create left child for E (if so press "1")0
Create right child for E (if so press "1")0
.... BINARY TREE ....
1.Creation
2.Inorder Traversal
3.Preorder Traversal
4.Postorder Traversal
5.Exit
Enter your choice: 2
C B D A E
.... BINARY TREE ....
1.Creation
2.Inorder Traversal
3.Preorder Traversal
4.Postorder Traversal
5.Exit
Enter your choice: 3
A B C D E
.... BINARY TREE ....
1.Creation
2.Inorder Traversal
3.Preorder Traversal
4.Postorder Traversal
5.Exit
Enter your choice: 4
C D B E A
.... BINARY TREE ....
1.Creation
2.Inorder Traversal
3.Preorder Traversal
4.Postorder Traversal
5.Exit
Enter your choice: 5
... Thanking You ...
Aim: Write a C++ program to implement Binary Search Tree
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"stdio.h"
struct node
{
int data;
node *left;
node *right;
};
node *root;
class bst
{
public:
bst()
{
root=NULL;
}
node *insert(node *,int);
void delet(node *,node*);
void search(node *,int);
node *find(node *,int);
};
node * bst::insert(node *root,int item)
{
if(root==NULL)
{
root=new node;
root->data=item;
root->left=root->right=NULL;
}
else if(item
root->left=insert(root->left,item);
else
root->right=insert(root->right,item);
return root;
}
void bst::search(node *root,int item)
{
if(root==NULL)
cout<<"\n Number doesnot exist ";
else if(root->data==item)
cout<<"\n Number is present ";
else if(item
search(root->left,item);
else
search(root->right,item);
}
node *bst::find(node *root,int item)
{
node *temp;
temp=root;
node *parent;
while(root!=NULL)
{
if(item
{
parent=root;
root=root->left;
}
else if(item>root->data)
{
parent=root;
root=root->right;
}
else
{
delet(root,parent);
break;
}
}
if(root==NULL)
{
cout<<"\n Item doesnot exist ";
}
return temp;
}
void bst::delet(node *root,node *parent)
{
if(root->left==NULL&&root->right==NULL)//terminal node
{
if(parent->left==root)
parent->left=NULL;
else
parent->right=NULL;
return;
}
else if(root->left!=NULL&&root->right!=NULL)//node with 2 childs
{
node *ptr,*temp;
parent=root;
temp=root->left;
ptr=root->right;
if(ptr->left==NULL)
{
root->data=ptr->data;
}
while(ptr->left!=NULL)
{
parent=ptr;
ptr=ptr->left;
root->data=ptr->data;
}
root->left=temp;
delete ptr;
return;
}
else//node with 1 child
{
if(parent->left==root)
{
if(root->left==NULL)
parent->left=root->right;
else
parent->left=root->left;
}
else if(parent->right==root)
{
if(root->left==NULL)
parent->right=root->right;
else
parent->right=root->left;
}
return;
}
}
void main()
{
clrscr();
bst ob;
int item,ch;
node *temp;
do
{
cout<<"\n\n ... BINARY SEARCH TREE ... ";
cout<<"\n\n1.Insertion\n2.Deletion\n3.Searching\n4.Exit";
cout<<"\n\t Enter your choice: ";
cin>>ch;
switch(ch)
{
case 1: cout<<"\n Enter an item: "; cin>>item;
root=ob.insert(root,item);
break;
case 2: cout<<"\n Enter the item: "; cin>>item;
root=ob.find(root,item);
break;
case 3: cout<<"\n Enter the item: "; cin>>item;
ob.search(root,item);
break;
case 4: cout<<"\n ... Thanking You ...";
getch();
exit(0);
default:cout<<"\n Invalid key-in ";
}
}while(1);
}
OUTPUT
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 25
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 10
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 20
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 5
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 35
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 1
Enter an item: 32
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 3
Enter the item: 10
Number is present
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 2
Enter the item: 10
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 3
Enter the item: 10
Number doesnot exist
... BINARY SEARCH TREE ...
1.Insertion
2.Deletion
3.Searching
4.Exit
Enter your choice: 4
... Thanking You ...
Aim: Write a C++ program to create and evaluate an Expression Tree
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
#include"ctype.h"
#include"stdio.h"
struct node
{
char data;
node *lchild;
node *rchild;
};
node *head;
char p[50];
node *stack[50];
int top=-1;
float c;
float v;
node *q;
class tree
{
node *root;
public:
tree(){ }
float evaluate(node *);
node *makenode(char);
void createtree();
void push(node *);
node *pop();
float result(float,float,char);
};
void tree::createtree()
{
int i=0;
while(p[i]!='\0')
{
root=makenode(p[i]);
if(!isalpha(p[i]))
{
root->rchild=pop();
root->lchild=pop();
}
push(root);
i++;
}
}
void tree::push(node *root)
{
top++;
stack[top]=root;
}
node *tree::pop()
{
q=stack[top];
top--;
return q;
}
node * tree::makenode(char x)
{
head=new node;
head->data=x;
head->lchild=head->rchild=NULL;
return head;
}
float tree::evaluate(node *root)
{
float a,b;
if(!isalpha(root->lchild->data))
a=evaluate(root->lchild);
else
{
cout<<"\n Enter the value for "<< root->lchild->data<<": ";
cin>>a;
}
if(!isalpha(root->rchild->data))
b=evaluate(root->rchild);
else
{
cout<<"\n Enter the value for "<< root->rchild->data<<": ";
cin>>b;
}
v=result(a,b,root->data);
return v;
}
float tree::result(float a,float b,char op)
{
float c=0;
switch(op)
{
case '+': c=a+b; break;
case '-': c=a-b; break;
case '*': c=a*b; break;
case '/': if(b!=0)
c=a/b;
else
{
cout<<"\n Error: ";
getch();
exit(0);
}
break;
}
return c;
}
void main()
{
clrscr();
float ans;
cout<<"\n Enter a postfix expression: ";
gets(p);
tree ob;
ob.createtree();
ans=ob.evaluate(stack[top]);
cout<<"\n Value of the expression is: "<< ans;
getch();
}
OUTPUT
Enter a postfix expression: ab/cd/*
Enter the value for a: 15
Enter the value for b: 5
Enter the value for c: 20
Enter the value for d: 4
Value of the expression is: 15
Aim: Write a C++ program to implement various Sorting techniques
PROGRAM
#include"iostream.h"
#include"conio.h"
#include"process.h"
int item;
void display(int a[],int n)
{
cout<<"\n Sorted elements are: \n";
for(int i=0;i< n;i++)
cout<< a[i]<<" ";
}
void bubblesort(int a[],int n)
{
int i,j,t;
for(i=0;i< n;i++)
{
for(j=0;j< n-1-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void seletionsort(int a[],int n)
{
int i,j,t;
for(i=0;i< n;i++)
{
for(j=i+1;j< n;j++)
{
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
void insertionsort(int a[],int n)
{
int k,j,t;
for(k=1;k< n;k++)
{
t=a[k];
j=k-1;
while(t< a[j]&&j>=0)
{
a[j+1]=a[j];
j--;
}
a[j+1]=t;
}
}
void quicksort(int a[],int low,int high)
{
int l,h,key,t;
l=low;
h=high;
key=a[(low+high)/2];
do
{
while(key>a[low])
low++;
while(key< a[high])
high--;
if(low<=high)
{
t=a[low];
a[low++]=a[high];
a[high--]=t;
}
}while(low<=high);
if(l< high)
quicksort(a,l,high);
if(low< h)
quicksort(a,low,h);
}
void bucketsort(int a[],int n)
{
int i,j,pass,k,l,div=1,num=0,large=a[0];
int buck[10],q[15][15];
for(i=1;i< n;i++)
{
if(a[i]>large)
large=a[i];
}
while(large>0)
{
num++;
large=large/10;
}
for(pass=0;pass< num;pass++)
{
for(k=0;k<10;k++)
buck[k]=0;
for(i=0;i< n;i++)
{
l=(a[i]/div)%10;
q[l][buck[l]]=a[i];
buck[l]++;
}
i=0;
for(k=0;k<10;k++)
for(j=0;j< buck[k];j++)
{
a[i]=q[k][j];
i++;
}
div=div*10;
}
}
void merge(int a[],int low,int mid,int high)
{
int i,h,j,b[30],k;
i=low;
h=low;
j=mid+1;
while(h<=mid&&j<=high)
{
if(a[h]< a[j])
{
b[i]=a[h];
h++;
}
else
{
b[i]=a[j];
j++;
}
i++;
}
if(h>mid)
{
for(k=j;k<=high;k++)
{
b[i]=a[k];
i++;
}
}
else
{
for(k=h;k<=mid;k++)
{
b[i]=a[k];
i++;
}
}
for(k=low;k<=high;k++)
{
a[k]=b[k];
}
}
void mergesort(int a[],int low,int high)
{
int mid;
if(low< high)
{
mid=(low+high)/2;
mergesort(a,low,mid);
mergesort(a,mid+1,high);
merge(a,low,mid,high);
}
}
/* for tree sort */
struct node
{
int data;
node *left;
node *right;
};
node *root;
class bst
{
public:
bst()
{
root=NULL;
}
node *insert(node *,int);
};
node * bst::insert(node *root,int item)
{
if(root==NULL)
{
root=new node;
root->data=item;
root->left=root->right=NULL;
}
else if(item
root->left=insert(root->left,item);
else
root->right=insert(root->right,item);
return root;
}
void inorder(node *root)
{
if(root!=NULL)
{
inorder(root->left);
cout<< root->data<<" ";
inorder(root->right);
}
}
void treesort(int a[],int n)
{
node *root;
bst ob;
for(int i=0;i< n;i++)
{
root=ob.insert(root,a[i]);
}
cout<<"\n Sorted elements are: \n";
inorder(root);
}
/* end of tree sort */
void heapsort(int a[],int n)
{
int i,s,f,item,value;
for(i=0;i< n;i++)
{
item=a[i];
s=i;
f=(s-1)/2;
while(s>0&&a[f]< item)
{
a[s]=a[f];
s=f;
f=(s-1)/2;
}
a[s]=item;
}
for(i=n-1;i>0;i--)
{
value=a[i];
a[i]=a[0];
f=0;
if(i==1)
s=-1;
else
s=1;
if(i>2&&a[2]>a[1])
s=2;
while(s>=0&&value< a[s])
{
a[f]=a[s];
f=s;
s=2*f+1;
if(s+1<=i-1&&a[s] s=s+1;
if(s>i-1)
s=-1;
}
a[f]=value;
}
}
void main()
{
int a[50],num[50],n,i,flag=1,ch,low,high;
clrscr();
do
{
cout<<"\n..... SORTING ....\n\n";
cout<<"\n1.BUBBLE SORT\n2.SELECTION SORT\n3.INSERTION SORT\n4.QUICK SORT";
cout<<"\n5.RADIX SORT\n6.MERGE SORT\n7.TREE SORT\n8.HEAP SORT\n9.EXIT";
cout<<"\n\t Enter your choice: ";
cin>>ch;
if(ch>=1&&ch<=8&&flag==1)
{
cout<<"\n Enter the limit: ";
cin>>n;
cout<<"\n Enter the elements: ";
for(i=0;i< n;i++)
{
cin>>a[i];
}
flag=0;
}
for(i=0;i< n;i++)
num[i]=a[i];
switch(ch)
{
case 1:bubblesort(num,n);
break;
case 2:seletionsort(num,n);
break;
case 3:insertionsort(num,n);
break;
case 4:low=0;high=n-1;
quicksort(num,low,high);
break;
case 5:bucketsort(num,n);
break;
case 6:low=0;high=n-1;
mergesort(num,low,high);
break;
case 7:flag=0;
treesort(num,n);
break;
case 8:heapsort(num,n);
break;
case 9:cout<<"\n\t .....Thanking You .....";
getch();
exit(0);
default:cout<<"\n\t Invalid key-in ";
}
if(ch>=1&&ch<=8&&ch!=7)
{
display(num,n);
}
}while(1);
}
OUTPUT
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 1
Enter the limit: 5
Enter the elements: 99 12 56 3 4
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 2
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 3
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 4
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 5
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 6
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 7
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 8
Sorted elements are:
3 4 12 56 99
..... SORTING ....
1.BUBBLE SORT
2.SELECTION SORT
3.INSERTION SORT
4.QUICK SORT
5.RADIX SORT
6.MERGE SORT
7.TREE SORT
8.HEAP SORT
9.EXIT
Enter your choice: 9
.....Thanking You .....
Aim: Write a C++ program to implement various Searching techniques
PROGRAM
#include”iostream.h”
#include”conio.h”
#include”process.h”
void sequential(int a[],int n,int item)
{
int flag=0,i;
for(i=0;i< n;i++)
{
if(a[i]==item)
{
cout<<"\n Item is found at position "<< i+1;
flag=1;
break;
}
}
if(flag==0) cout<<"\n Item not found ";
}
void binary(int a[],int n,int item)
{
int loc=-1,b=0,e=n-1,mid=-1;
while((b<=e)&&(a[mid]!=item))
{
mid=(b+e)/2;
if(item==a[mid])
{
cout<<"\n Item is found at position "<< mid+1;
loc=mid;
}
else if(item< a[mid])
e=mid-1;
else
b=mid+1;
}
if(loc==-1) cout<<"\n Item not found ";
}
void main()
{
int num[50],n,item,ch,flag=1,i;
clrscr();
do
{
cout<<"\n\n\n .... SEARCHING .... \n\n\n";
cout<<"\n1.Sequential Search\n2.Binary Search\n3.Enter another list\n4.Exit";
cout<<"\n\t Enter your choice: ";
cin>>ch;
if(ch==3) flag=1;
if(ch>=1&&ch<=3&&flag==1)
{
cout<<"\n Enter the limit: ";
cin>>n;
cout<<"\n Enter the elements: ";
for(i=0;i< n;i++)
cin>>num[i];
}
if(ch>=1&&ch<=2)
{
cout<<"\n Enter the element to be searched: ";
cin>>item;
}
switch(ch)
{
case 1:sequential(num,n,item);
break;
case 2:binary(num,n,item);
break;
case 3:break;
case 4:cout<<"\n\t.... Thanking You .... ";
getch();
exit(0);
default:cout<<"\n\t Invalid key-in";
}
flag=0;
}while(1);
}
OUTPUT
.... SEARCHING ....
1.Sequential Search
2.Binary Search
3.Enter another list
4.Exit
Enter your choice: 1
Enter the limit: 5
Enter the elements: 12 56 10 45 96
Enter the element to be searched: 10
Item is found at position 3
.... SEARCHING ....
1.Sequential Search
2.Binary Search
3.Enter another list
4.Exit
Enter your choice: 3
Enter the limit: 5
Enter the elements: 10 20 30 40 50
.... SEARCHING ....
1.Sequential Search
2.Binary Search
3.Enter another list
4.Exit
Enter your choice: 2
Enter the element to be searched: 40
Item is found at position 4
....SEARCHING ....
1.Sequential Search
2.Binary Search
3.Enter another list
4.Exit
Enter your choice: 4
.... Thanking You ....
Comments
Post a Comment
Please let us know your comments and suggestions on this blog. Your comments are of great value to us.