Skip to main content

...DATA STRUCTURE PROGRAMS IN C++...

.................................................................................................

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 ....

Comments

Popular posts from this blog

Quiz2

..................................................................................................... Identify the person through the description provided 1. This cult figure in Indian politics was born on December 25, 1924 at Gwalior, Madhya Pradesh. He was elected to the 5th, 6th and 7th Lok Sabha and again to the 10th, 11th and 12th Lok Sabha and to Rajya Sabha in 1962 and 1986. He was defeated in 1984 by the great Congressman Madhav Rao Scindhia from the Guna constituency. He is the only parliamentarian elected from four different States at different times namely - UP, Gujarat, MP and Delhi. Whom are we talking about? Answer: Atal Behari Bajpayee 2. Don Budge did it in 1938. Rod Laver achieved the same feat twice in 1962 and 1969 in the field of lawn tennis. What did they accomplish? Answer: These are the only men to have won all the four Grand Slams in a calendar year 3. Built by Mohammed Quli Qutub Shah in 1591, shortly after he had shifted his capital from Golkonda to what now i...

Blog Directory

..................................................................................................... Read this before accessing the blog resources For new posts please visit  https://theinsantechie.in NB: You can have access to each post in this blog by just clicking on the corresponding link given below. Note that the gadget named "Blog Archive" also includes the links to these posts. But it is easier to refer to the posts through the links provided below. ..................................................................................................... 1. Data structure programs. 2. OOP Extra Questions with Answers. 3. OOP in C++ - extra programs. 4. Quiz Questions with answers :1 5. Quiz Questions with answers :2 6. Quiz Questions with answers :3 7. Quiz Questions with answers :4 8. Quiz Questions with answers :5 9. Aptitude questions with answers. 10. Infosys Questions with Answers. 11. DS lab Extra Questions. ...

Infosys Questions with Answers

  Father's age is three years more than three times the son's age. After three years, father's age will be ten years more than twice the son's age. What is the father's present age. 33 years. (2 marks) Find the values of each of the alphabets. N O O N S O O N + M O O N ---------- J U N E 9326 (2 marks) There are 20 poles with a constant distance between each pole A car takes 24 second to reach the 12th pole. How much will it take to reach the last pole. 41.45 seconds (2 marks) Let the distance between two poles = x Hence 11x:24::19x:? A car is travelling at a uniform speed. The driver sees a milestone showing a 2-digit number. After travelling for an hour the driver sees another milestone with the same digits in reverse order. After another hour the driver sees another milestone containing the same two digits. What is the average speed of the driver. 45 kmph (4 marks) The minute and the hour hand of a watch meet every 65 minutes. How much does the watch lo...