0% found this document useful (0 votes)
14 views87 pages

ECE II OOPS Manual

The document contains multiple C++ programs demonstrating key programming concepts such as classes and objects, constructors and destructors, multiple inheritance, static member functions, operator overloading, array implementation, and linked list operations. Each program is accompanied by its output and a conclusion stating successful execution and verification of results. Overall, it serves as a comprehensive guide to fundamental C++ programming techniques.

Uploaded by

Nivethitha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views87 pages

ECE II OOPS Manual

The document contains multiple C++ programs demonstrating key programming concepts such as classes and objects, constructors and destructors, multiple inheritance, static member functions, operator overloading, array implementation, and linked list operations. Each program is accompanied by its output and a conclusion stating successful execution and verification of results. Overall, it serves as a comprehensive guide to fundamental C++ programming techniques.

Uploaded by

Nivethitha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 87

// PROGRAM FOR CLASS AND OBJECTS

#include<iostream.h>
#include<conio.h>
class stud
{
private:
int m1,m2,m3,rno,tot;
char name[20];
float avg;
public:
void input()
{
cout<<"\n\n\t\t\t CLASS AND OBJECTS \n ";
cout<<"\n ENTER YOUR NAME : ";
cin>>name;
cout<<"\n ENTER A REGISTER NUMBER : ";
cin>>rno;
cout<<"\n ENTER THREE SUBJECT MARKS : ";
cin>>m1>>m2>>m3;
}
void print()
{
cout<<"\n NAME : "<<name<<endl;
cout<<"\n REGISTER NUMBER : "<<rno<<endl;
cout<<"\n THREE SUBJECT MARKS : "<<m1<<"\t"<<m2<<"\t"<<m3<<endl;
cout<<"\n RESULT = ";
if((m1>=50)&&(m2>=50)&&(m3>=50))
{
cout<<" PASS "<<endl;
tot=m1+m2+m3;
avg=tot/3;
cout<<"\n TOTAL = "<<tot<<endl;
cout<<"\n AVERAGE = "<<avg<<endl;
}
else
{
cout<<" FAIL "<<endl;
}}};
void main()
{
clrscr();
stud s;
s.input();
s.print();
getch();
}
OUTPUT:
CLASS AND OBJECTS
ENTER YOUR NAME: RAJA.A
ENTER A REGISTER NUMBER: 12345
ENTER THREE SUBJECT MARKS: 90
98
78
NAME: RAJA.A
REGISTER NUMBER: 12345
THREE SUBJECT MARKS: 90 98 78
RESULT = PASS
TOTAL = 266
AVERAGE = 88

CLASS AND OBJECTS


ENTER YOUR NAME: RAVI.S
ENTER A REGISTER NUMBER: 4321
ENTER THREE SUBJECT MARKS: 10
60
90
NAME: RAVI.S
REGISTER NUMBER: 4321
THREE SUBJECT MARKS: 10 60 90
RESULT = FAIL
Result:
Thus the C++ program for implementing the concept of Classes and Objects has
been executed successfully and the output was verified.
// PROGRAM FOR CONSTRUCTOR AND DESTRUCTOR
#include<iostream.h>
#include<conio.h>
#include<process.h>
class prime
{
private:
int a,i,n;
public:
prime()
{
cout<<"\n\n\t\t CONSTRUCTOR AND DESTRUCTOR \n";
cout<<"\n ENTER A NUMBER: ";
cin>>n;
for(i=2;i<=n/2;i++)
{
if(n%2==0)
{
cout<<"\n THE GIVEN NUMBER IS NOT PRIME. "<<endl;
getch();
exit(0);
}
}
cout<<"\n THE GIVEN NUMBER IS PRIME. "<<endl;
}
~prime()
{
cout<<"\n ALL CONTENTS ARE DELETED........"<<endl;
getch();
}
};
void main()
{
clrscr();
prime p;
getch();
}
OUTPUT:
CONSTRUCTOR AND DESTRUCTOR
ENTER A NUMBER: 8
THE GIVEN NUMBER IS NOT PRIME.

CONSTRUCTOR AND DESTRUCTOR


ENTER A NUMBER: 5
THE GIVEN NUMBER IS PRIME.
ALL CONTENTS ARE DELETED........
Result:
Thus the C++ program for implementing the concepts of Constructor and
Destructor has been executed successfully and the output was verified.
//PROGRAM FOR MULTIPLE INHERITANCES
#include<iostream.h>
class student
{
protected: int rollno;
public: void getnumber(int a)
{
rollno=a;
}
void putnumber()
{
cout<<"\nRoll.no :"<<rollno;
}};
class test: public student
{
protected: float sub1,sub2;
public: void getmarks (float x, float y)
{
sub1=x;
sub2=y;
}
void putmarks()
{
cout<<"\nSub_1 :"<<sub1<<"\nSub_2 :"<<sub2;
}};
class result: public test {
float total;
public:
void display ()
{
total=sub1+sub2;
putnumber();
putmarks();
cout<<"\nTotal :"<<total;
}};
int main()
{
result stud1;
stud1.getnumber(100);
stud1.getmarks(85,75);
stud1.display();
return 0;
}
OUTPUT:
Roll.no :100
Sub_1 :85
Sub_2 :75
Total :160

RESULT:
Thus the C++ program for multilevel inheritance was executed successfully.
//PROGRAM FOR STATIC MEMBER FUNCTION
#include<iostream.h>
class item
{
static int count;int num;
public:void getdata(int a)
{
num=a;count++;cout<<”Number”<<num;
}
void showcount()
cout<<”count”;cout<<count<<”\n”;
}
};
int item::count;int main()
{
item a,b,c;
a.showcount();
b.showcount();
c.showcount();
a.getdata(20);
b.getdata(30);
c.getdata(40);
a.showcount();
b.showcount();
c.showcount();
}
Output:
count 0count 0count 0
Number 20 Number 30 Number 40
count 3count 3count 3

Result:
Thus the C++ program for implementing the concepts of Static Member Function has been
executed successfully and the output was verified.
//PROGRAM FOR OPERATOR OVERLOADING
#include<iostream.h>
#include<string.h>
#include<conio.h>
const int bufsize=50;
class string
{
private:
char str[bufsize];
public:
string()
{
strcpy(str," ");
}
string(char*mystr)
{
strcpy(str,mystr);
}
void echo()
{
cout<<str;
}
string operator+(string s)
{
string temp=str;
strcat(temp.str,s.str);
return temp;
}
};
void main()
{
clrscr();
string str1=" stud";
string str2=" ent";
string str3;
cout<<"\n before str3=str1=str2;.";
cout<<"\n str1=";
str1.echo();
cout<<"\nstr2=";
str2.echo();
cout<<"\n str3=";
str3.echo();
str3=str1+str2;
cout<<"\n\n after str3=str1+str2:..";
cout<<"\n str1=";
str1.echo();
cout<<"\n str2=";
str2.echo();
cout<<"\n str3=";
str3.echo();
getch();
}
OUTPUT:
Before str3=str1=str2;
str1=stud
str2=ent
str3=
After
str3=str1+str2:
str1=stud
str2=ent
str3=student

RESULT:
Thus to write a c++ program to concatenate two string using the concept of operator
overloading was successfully completed.
// PROGRAM FOR ARRAY IMPLEMENTATION
#include<iostream.h>
#include<conio.h>
#include<process.h>
class array
{
private:
int a[20],i,n,p,d,i1,d1;
public:
void arrayin()
{
cout<<"\n\n\t\t ARRAY IMPLEMENTATION \n\n";
cout<<"\n ENTER THE ARRAY SIZE : ";
cin>>n;
cout<<"\n ENTER THE ARRAY ELEMENTS ONE BY ONE : "<<endl;
for(i=0;i<n;i++)
{
cin>>a[i];
}
}
void print()
{
cout<<"\n ARRAY ELEMENT "<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<<endl;
}
}
void insert()
{
cout<<"\n ENTER THE POSITION TO INSERT : "<<endl;
cin>>p;
for(i=n+1;i>=p;i--)
{
a[i]=a[i-1];
}
cout<<"\n ENTER THE ELEMENT TO INSERT : "<<endl;
cin>>i1;
a[i]=i1;
cout<<"\n THE NEW ARRAY ELEMENTS AFTER INSERTION : "<<endl;
for(i=0;i<n+1;i++)
{
cout<<a[i]<<endl;
}
}
void del()
{
cout<<"\n ENTER THE POSITION TO DELETE : ";
cin>>d;
for(i=d-1;i<n+1;i++)
{
a[i]=a[i+1];
}
cout<<"\n THE NEW ARRAY ELEMENTS AFTER DELETION : ";
for(i=0;i<n-1;i++)
{
cout<<a[i]<<endl;
}
}
};
void main()
{
array k;
int ch;
clrscr();
k.arrayin();
cout<<"\n\n\t\t INDEX \n"<<endl;
cout<<"\n 1.ARRAY ELEMENT INSERTION \n"<<endl;
cout<<"\n 2.ARRAY ELEMENT DELETION \n"<<endl;
cout<<"\n 3.exit \n"<<endl;
cout<<"\n ENTER YOUR CHOICE : ";
cin>>ch;
switch (ch)
{
case 1:
k.insert();
break;
case 2:
k.del();
break;
case 3:
exit(0);
default: cout<<"\n INVALID CHOICE "<<endl;
}
getch();
}
OUTPUT:
ARRAY IMPLEMENTATION
ENTER THE ARRAY SIZE: 5
ENTER THE ARRAY ELEMENTS ONE BY ONE:
10
20
30
40
50
INDEX
1. ARRAY ELEMENT INSERTION
2. ARRAY ELEMENT DELETION
3. EXIT
ENTER YOUR CHOICE: 1
ENTER THE POSITION TO INSERT: 2
ENTER THE ELEMENT TO INSERT: 25
THE NEW ARRAY ELEMENTS AFTER INSERTION:
10
25
20
30
40
50
ARRAY IMPLEMENTATION
ENTER THE ARRAY SIZE: 5
ENTER THE ARRAY ELEMENTS ONE BY ONE:
10
20
30
40
50
INDEX
1. ARRAY ELEMENT INSERTION
2. ARRAY ELEMENT DELETION
3. EXIT
ENTER YOUR CHOICE: 2
ENTER THE POSITION TO DELETE: 2
THE NEW ARRAY ELEMENTS AFTER DELETION: 10
30
40
50
Result:
Thus the C++ program for implementing the concept of Array has been executed
successfully and the output was verified.
// PROGRAM FOR LINKED LIST OPERATIONS
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
struct list
{
int data;
struct list*next;
}*start;
void insempty();
void insbegin();
void insmiddle();
void insend();
void delsingle();
void delbegin();
void delmiddle();
void delend();
void display();
void main()
{
int ch,ch1;
clrscr();
do
{
cout<<"\n\n\t\t SINGLY LINKED LIST \n\n";
cout<<"\n\n\t\t LIST OPERATIONS \n\n";
cout<<"\n 1.INSERT AN ELEMENT \n";
cout<<"\n 2.DELETE AN ELEMENT \n";
cout<<"\n 3.DISPLAY AN ELEMENT \n";
cout<<"\n 4.EXIT \n";
cout<<"\n\n\n ENTER YOUR CHOICE : ";
cin>>ch;
switch(ch)
{
case 1:
cout<<"\n\n\t\t INSERT OPERATIONS \n\n";
cout<<"\n 1.INSERT AT EMPTY \n";
cout<<"\n 2.INSERT AT BEGIN \n";
cout<<"\n 3.INSERT AT MIDDLE \n";
cout<<"\n 4.INSERT AT END \n";
cout<<"\n\n\n ENTER YOUR CHOICE : ";
cin>>ch1;
switch(ch1)
{
case 1:
insempty();
break;
case 2:
insbegin();
break;
case 3:
insmiddle();
break;
case 4:
insend();
break;
}
break;
case 2:
cout<<"\n\n\t\t DELETE OPERATIONS \n\n";
cout<<"\n 1.SINGLE NODE DELETION \n";
cout<<"\n 2.DELETE AT BEGIN \n";
cout<<"\n 3.DELETE AT MIDDLE \n";
cout<<"\n 4.DELETE AT END \n";
cout<<"\n\n\n ENTER YOUR CHOICE : ";
cin>>ch1;
switch(ch1)
{
case 1:
delsingle();
break;
case 2:
delbegin();
break;
case 3:
delmiddle();
break;
case 4:
delend();
break;
}
break;
case 3:
display();
break;
case 4:
exit(0);
}
}
while(ch<=3);
getch();
}
void insempty()
{
if(start!=NULL)
cout<<"\n LIST IS NOT EMPTY ";
else
{
struct list*node;
node=new list;
cout<<"\n ENTER THE VALUE : ";
cin>>node->data;
node->next=NULL;
start=node;
}
}
void insbegin()
{
if(start==NULL)
cout<<"\n LIST IS EMPTY SO PLEASE INSERT AT EMPTY ";
else
{
struct list*node;
node=new list;
cout<<"\n ENTER THE VALUE : ";
cin>>node->data;
node->next=start;
start=node;
}
}
void insmiddle()
{
int item;
if(start->next==NULL)
cout<<"\n IT IS NOT POSSIBLE TO INSERT AN ELEMENT AT MIDDLE ";
else
{
struct list *node,*pre,*ptr,*temp;
node=new list;
cout<<"\n ENTER THE VALUE : ";
cin>>node->data;
cout<<"\n ENTER THE ELEMENT BEFORE INSERTION : ";
cin>>item;
pre=start;
while(pre->data!=item)
{
temp=pre;
pre=pre->next;
}
temp->next=node;
node->next=pre;
}
}
void insend()
{
if (start==NULL)
cout<<"\n LIST IS EMPTY ";
else
{
struct list *node,*pre,*ptr;
node=new list;
cout<<"\n ENTER THE VALUE : ";
cin>>node->data;
ptr=start;
while(ptr!=NULL)
{
pre=ptr;
ptr=ptr->next;
}
pre->next=node;
node->next=NULL;
}
}
void delsingle()
{
if(start->next!=NULL)
cout<<"\n LIST HAVING MORE THAN ONE NODE ";
else
{
cout<<"\n DELETED NODE IS : "<<start->data;
start=NULL;
}}
void delbegin()
{
if(start->next==NULL)
cout<<"\n LIST HAVING ONLY ONE NODE ";
else
{
cout<<"\n DELETED ELEMENT IS : "<<start->data;
start=start->next;
}}
void delmiddle()
{
int item;
struct list*ptr,*pre;
ptr=start->next;
if(ptr->next==NULL)
cout<<"\n THERE IS NO MIDDLE NODE ";
else
{
cout<<"\n ENTER THE ELEMENT TO DELETE : ";
cin>>item;
pre=start;
for(ptr=start;(ptr);ptr->next)
{
if(ptr->data==item)
{
pre->next=ptr->next;
break;
}
pre=ptr;
}}}
void delend()
{
if(start->next==NULL)
cout<<"\n IT IS NOT POSSIBLE TO DELETE AT END ";
else
{
struct list*ptr,*pre,*loc;
pre=loc= start;
for(ptr=start;(ptr);ptr->next)
{
loc=pre;
pre=ptr;
}
cout<<"\n DELETED ELEMENT IS : "<<pre->data;
loc->next=NULL;
}}
void display()
{
struct list*ptr;
if(start==NULL)
cout<<"\n LIST IS EMPTY ";
else
{
cout<<"\n NOW, LIST HAVING THE FOLLOWING ELEMENTS : ";
for(ptr=start;(ptr);ptr=ptr->next)
cout<<ptr->data<<"\n";
}
}
OUTPUT:

SINGLY LINKED LIST


LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 1
INSERT OPERATIONS
1. INSERT AT EMPTY
2. INSERT AT BEGIN
3. INSERT AT MIDDLE
4. INSERT AT END
ENTER YOUR CHOICE: 1
ENTER THE VALUE: 10
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 1
INSERT OPERATIONS
1. INSERT AT EMPTY
2. INSERT AT BEGIN
3. INSERT AT MIDDLE
4. INSERT AT END
ENTER YOUR CHOICE: 2
ENTER THE VALUE: 20
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 3
LIST HAVING THE FOLLOWING ELEMENTS: 20
10
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 1
INSERT OPERATIONS
1. INSERT AT EMPTY
2. INSERT AT BEGIN
3. INSERT AT MIDDLE
4. INSERT AT END
ENTER YOUR CHOICE: 3
ENTER THE VALUE: 30
ENTER ELEMENT BEFORE INSERTION: 10
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 3
LIST HAVING THE FOLLOWING ELEMENTS: 20
30
10
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 1
INSERT OPERATIONS
1. INSERT AT EMPTY
2. INSERT AT BEGIN
3. INSERT AT MIDDLE
4. INSERT AT END
ENTER YOUR CHOICE: 4
ENTER THE VALUE: 40
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 3
NOW, LIST HAVING THE FOLLOWING ELEMENTS: 20
30
10
40
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 2
DELETE OPERATIONS
1. SINGLE NODE DELETION
2. DELETE AT BEGIN
3. DELETE AT MIDDLE
4. DELETE AT END
ENTER YOUR CHOICE: 1
LIST HAVING MORE THAN ONE NODE
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 2
DELETE OPERATIONS
1. SINGLE NODE DELETION
2. DELETE AT BEGIN
3. DELETE AT MIDDLE
4. DELETE AT END
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 20
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 3
NOW, LIST HAVING THE FOLLOWING ELEMENTS: 30
10
40
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 2
DELETE OPERATIONS
1. SINGLE NODE DELETION
2. DELETE AT BEGIN
3. DELETE AT MIDDLE
4. DELETE AT END
ENTER YOUR CHOICE: 3
ENTER THE ELEMENT TO DELETE: 10
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 3
NOW, LIST HAVING THE FOLLOWING ELEMENTS: 30
40
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 2
DELETE OPERATIONS
1. SINGLE NODE DELETION
2. DELETE AT BEGIN
3. DELETE AT MIDDLE
4. DELETE AT END
ENTER YOUR CHOICE: 4
DELETED ELEMENT IS: 30
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 3
NOW, LIST HAVING THE FOLLOWING ELEMENTS: 40
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 2
DELETE OPERATIONS
1. SINGLE NODE DELETION
2. DELETE AT BEGIN
3. DELETE AT MIDDLE
4. DELETE AT END
ENTER YOUR CHOICE: 4
IT IS NOT POSSIBLE TO DELETE AT END
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 2
DELETE OPERATIONS
1. SINGLE NODE DELETION
2. DELETE AT BEGIN
3. DELETE AT MIDDLE
4. DELETE AT END
ENTER YOUR CHOICE: 1
DELETED NODE IS: 40
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 3
LIST IS EMPTY
SINGLY LINKED LIST
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 2
DELETE OPERATIONS
1. SINGLE NODE DELETION
2. DELETE AT BEGIN
3. DELETE AT MIDDLE
4. DELETE AT END
ENTER YOUR CHOICE: 1
LIST IS EMPTY
LIST OPERATIONS
1. INSERT AN ELEMENT
2. DELETE AN ELEMENT
3. DISPLAY AN ELEMENT
4. EXIT
ENTER YOUR CHOICE: 4
Result:
Thus the C++ program for implementing the Linked List Operations has been
executed successfully and the output was verified.
// PROGRAM FOR CURSOR IMPLEMENTATION OF LIST ADT
#include<iostream.h>
#include<conio.h>
int main()
{
int a[20],i,j,ch,n,x;
while(1)
{
clrscr();
cout<<"\n\n\t\t CURSOR IMPLEMENTATION OF LIST ADT \n";
cout<<"\n\n\t LIST OPERATIONS \n\n";
cout<<"\n 1.CREATION \n";
cout<<"\n 2.INSERTION \n";
cout<<"\n 3.DELETION \n";
cout<<"\n 4.DISPLAY \n";
cout<<"\n 5.SEARCH \n";
cout<<"\n 6.EXIT \n";
cout<<"\n ENTER YOUR CHOICE : ";
cin>>ch;
switch(ch)
{
case 1:
cout<<"\n ENTER THE TOTAL NO OF VALUE : ";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"\n ENTER THE "<<i+1<<" VALUE : ";
cin>>a[i];
}
break;
case 2:
cout<<"\n ENTER THE INSERT POSITION : ";
cin>>i;
for(j=n;j>i-1;j--)
a[j]=a[j-1];
cout<<"\n ENTER THE INSERT VALUE : ";
cin>>a[i];
n++;
break;
case 3:
if(n<0)
cout<<"\n THE LIST IS EMPTY ";
else
{
cout<<"\n ENTER THE DELETING POSITION : ";
cin>>j;
cout<<"\n THE DELETED ELEMENT IS : "<<a[j];
for(i=j-1;i<n;i++)
a[i]=a[i+1];
n--;
}
getch();
break;
case 4:
for(i=1;i<n;i++)
cout<<a[i]<<"\t";
getch();
break;
case 5:
if(n<0)
cout<<"\n THE LIST IS EMPTY ";
else
{
cout<<"\n ENTER THE SEARCHING ELEMENT : ";
cin>>x;
for(i=0;i<n;i++)
if(a[i]==x)
{
cout<<"\n THE GIVEN ELEMENT FOUND IN THE POSITION "<<i;
goto aa;
}
cout<<"\n THE GIVEN ELEMENT NOT FOUND IN THIS LIST ";
aa:getch();
break;
case 6:
return(0);
}
getch();
}
}
}
OUTPUT:
CURSOR IMPLEMENTATION OF LIST ADT
LIST OPERATIONS
1. CREATION
2. INSERTION
3. DELETION
4. DISPLAY
5. SEARCH
6. EXIT
ENTER YOUR CHOICE: 1
ENTER THE TOTAL NO OF VALUE: 5
ENTER THE 1 VALUE: 10
ENTER THE 2 VALUE: 20
ENTER THE 3 VALUE: 30
ENTER THE 4 VALUE: 40
ENTER THE 5 VALUE: 50
CURSOR IMPLEMENTATION OF LIST ADT
LIST OPERATIONS
1. CREATION
2. INSERTION
3. DELETION
4. DISPLAY
5. SEARCH
6. EXIT
ENTER YOUR CHOICE: 4
10 20 30 40 50
CURSOR IMPLEMENTATION OF LIST ADT
LIST OPERATIONS
1. CREATION
2. INSERTION
3. DELETION
4. DISPLAY
5. SEARCH
6. EXIT
ENTER YOUR CHOICE: 2
ENTER THE INSERT POSITION: 0
ENTER THE INSERT VALUE: 5
CURSOR IMPLEMENTATION OF LIST ADT
LIST OPERATIONS
1. CREATION
2. INSERTION
3. DELETION
4. DISPLAY
5. SEARCH
6. EXIT
ENTER YOUR CHOICE: 4
5 10 20 30 40 50
CURSOR IMPLEMENTATION OF LIST ADT
LIST OPERATIONS
1. CREATION
2. INSERTION
3. DELETION
4. DISPLAY
5. SEARCH
6. EXIT
ENTER YOUR CHOICE: 3
ENTER THE DELETING POSITION: 0
THE DELETED ELEMENT IS: 5
CURSOR IMPLEMENTATION OF LIST ADT
LIST OPERATIONS
1. CREATION
2. INSERTION
3. DELETION
4. DISPLAY
5. SEARCH
6. EXIT
ENTER YOUR CHOICE: 4
10 20 30 40 50
CURSOR IMPLEMENTATION OF LIST ADT
LIST OPERATIONS
1. CREATION
2. INSERTION
3. DELETION
4. DISPLAY
5. SEARCH
6. EXIT
ENTER YOUR CHOICE: 5
ENTER THE SEARCHING ELEMENT: 10
THE GIVEN ELEMENT FOUND IN THE POSITION 0
CURSOR IMPLEMENTATION OF LIST ADT
LIST OPERATIONS
1. CREATION
2. INSERTION
3. DELETION
4. DISPLAY
5. SEARCH
6. EXIT
ENTER YOUR CHOICE: 5
ENTER THE SEARCHING ELEMENT: 20
THE GIVEN ELEMENT FOUND IN THE POSITION 1
CURSOR IMPLEMENTATION OF LIST ADT
LIST OPERATIONS
1. CREATION
2. INSERTION
3. DELETION
4. DISPLAY
5. SEARCH
6. EXIT
ENTER YOUR CHOICE: 5
ENTER THE SEARCHING ELEMENT: 90
THE GIVEN ELEMENT NOT FOUND IN THIS LIST
CURSOR IMPLEMENTATION OF LIST ADT
LIST OPERATIONS
1. CREATION
2. INSERTION
3. DELETION
4. DISPLAY
5. SEARCH
6. EXIT
ENTER YOUR CHOICE: 6
Result:
Thus the C++ program for implementing the Cursor concepts for LIST ADT Operations
has been executed successfully and the output was verified.
// PROGRAM FOR STACK ADT USING ARRAY IMPLEMENTATION
#include<iostream.h>
#include<conio.h>
#include<process.h>
#define size 3
void push();
void pop();
void display();
int s[size],top=-1;
void main()
{
int ch;
clrscr();
do
{
cout<<"\n\n\t\t STACK ADT USING ARRAY IMPLEMENTATION \n";
cout<<"\n STACK OPERATIONS "<<endl;
cout<<"\n 1.PUSH \n \n 2.POP \n \n 3.DISPLAY \n \n 4.EXIT \n "<<endl;
cout<<"\n ENTER UR CHOICE : ";
cin>>ch;
switch(ch)
{
case 1:
push();
break;
case 2:
pop();
break;
case 3:
display();
break;
case 4:
exit(0);
}
}
while(ch<4);
}
void push()
{
int no;
if(top==size-1)
cout<<"\n STACK IS FULL "<<endl;
else
{
cout<<"\n ENTER THE NUMBER : ";
cin>>no;
top++;
s[top]=no;
}
}
void pop()
{
int no;
if(top==-1)
cout<<"\n STACK IS EMPTY "<<endl;
else
{
no=s[top];
cout<<"\n ELEMENT "<<no<<" IS POPPED OUT FROM THE STACK "<<endl;
top--;
}
}
void display()
{
int i;
if(top==-1)
{
cout<<"\n STACK IS EMPTY "<<endl;
return;
}
cout<<"\n THE ELEMENTS IN STACK ARE : "<<endl;
for(i=top;i>=0;i--)
{
cout<<s[i]<<endl;
}
}
OUTPUT:
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 1
ENTER THE NUMBER: 10
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 1
ENTER THE NUMBER: 20
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 1
ENTER THE NUMBER: 30
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 3
THE ELEMENTS IN STACK ARE:
30
20
10
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 2
ELEMENT 30 IS POPPED OUT FROM THE STACK
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 3
THE ELEMENTS IN STACK ARE:
20
10
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 2
ELEMENT 20 IS POPPED OUT FROM THE STACK
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 3
THE ELEMENTS IN STACK ARE:
10
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 2
ELEMENT 10 IS POPPED OUT FROM THE STACK
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 3
STACK IS EMPTY
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 2
STACK IS EMPTY
STACK ADT USING ARRAY IMPLEMENTATION
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER UR CHOICE: 4
Result:
Thus the C++ program for implementing the STACK ADT operations using Array
has been executed successfully and the output was verified.
// PROGRAM FOR STACK ADT USING LINKED LIST
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int ch,top=0,n;
void sadd();
void sdelete();
void sprint();
struct list
{
int data;
struct list*next;
}*start;
void main()
{
clrscr();
cout<<"\n\n\t\t STACK ADT USING LINKED LIST \n";
cout<<"\n ENTER THE SIZE OF THE STACK : ";
cin>>n;
W:
cout<<"\n\n\t\t STACK OPERATIONS \n";
cout<<"\n 1.PUSH \n";
cout<<"\n 2.POP \n";
cout<<"\n 3.DISPLALY \n";
cout<<"\n 4.EXIT \n";
cout<<"\n ENTER YOUR CHOICE : ";
cin>>ch;
switch(ch)
{
case 1:
sadd();
break;
case 2:
sdelete();
break;
case 3:
sprint();
break;
case 4:
exit(0);
}
if(ch<=3)
goto W;
getch();
}
void sadd()
{
if(top==n)
{
cout<<"\n STACK IS FULL \n";
}
else
{
if(start==NULL)
{
struct list * node;
node=new list;
cout<<"\n ENTER THE VALUE TO PUSH : ";
cin>>node->data;
node->next=NULL;
start=node;
top++;
}
else
{
struct list * node;
node=new list;
cout<<"\n ENTER THE VALUE TO PUSH : ";
cin>>node->data;
node->next=start;
start=node;
top++;
}
}
}
void sprint()
{
struct list*ptr;
if(start==NULL)
cout<<"\n STACK IS EMPTY ";
else
{
cout<<"\n STACK HAVING THE FOLLOWING ELEMENTS : ";
for(ptr=start;(ptr);ptr=ptr->next)
cout<<ptr->data<<"\n";
getch();
}
}
void sdelete()
{
if(top<=0)
{
cout<<"\n STACK IS EMPTY ";
}
else
{
if(start->next!=NULL)
{
cout<<"\n DELETED ELEMENT IS : "<<start->data;
start=start->next;
}
else
{
cout<<"\n DELETED ELEMENT IS : "<<start->data;
start=NULL;
}
}
top--;
}
OUTPUT:
STACK ADT USING LINKED LIST
ENTER THE SIZE OF THE STACK: 5
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE VALUE TO PUSH: 10
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE VALUE TO PUSH: 20
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE VALUE TO PUSH: 30
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE VALUE TO PUSH: 40
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE VALUE TO PUSH: 50
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
STACK IS FULL
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
STACK HAVING THE FOLLOWING ELEMENTS: 50
40
30
20
10
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 50
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
STACK HAVING THE FOLLOWING ELEMENTS: 40
30
20
10
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 40
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
STACK HAVING THE FOLLOWING ELEMENTS: 30
20
10
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 30
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
STACK HAVING THE FOLLOWING ELEMENTS: 20
10
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 20
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
STACK HAVING THE FOLLOWING ELEMENTS: 10
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 10
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
STACK IS EMPTY
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
STACK IS EMPTY
STACK OPERATIONS
1. PUSH
2. POP
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 4
Result:
Thus the C++ program for implementing the STACK ADT operations using Linked
List has been executed successfully and the output was verified.
// PROGRAM FOR INFIX TO POSTFIX CONVERSION USING STACK
APPLICATION
#include<iostream.h>
#include<conio.h>
class stack
{
char ch[20],eq[20],st[20];
char top;
int x,y,z;
public:
stack()
{
top='+';
x=y=0;
z=-1;
}
void get();
void post();
int prcd(char,char);
};
void stack::get()
{
cout<<"\n\n\t\t INFIX TO POSTFIX CONVERSION USING STACK APPLICATION \n";
cout<<"\n\n ENTER ANY EQUATION : ";
cin>>st;
cout<<"\n BEFORE INFIX TO POSTFIX CONVERSION : "<<st;
}
void stack::post()
{
while(st[x]!='\0')
{
if((st[x]>='A'&&st[x]<'Z')||(st[x]>='a'&&st[x]<='z'))
ch[y++]=st[x];
else if(st[x]==')')
{
while(eq[z]!=')')
ch[y++]=eq[z--];
top=eq[--z];
}
else
{
while(z>=0&&prcd(top,st[x]==1))
{
ch[y++]=top;
top=eq[--z];
}
eq[++z]=st[x];
top=st[x];
}
x++;
}
while(z>=0)
{
if(eq[z]=='(')
z--;
else
ch[y++]=eq[z--];
}
ch[y]='\0';
cout<<"\n\n AFTER INFIX TO POSTFIX CONVERSION : "<<ch;
}
int stack::prcd(char g,char r)
{
if(r=='('||r=='$')
return 0;
else if(g=='$'||g=='*'||g=='/')
return 1;
else if(r=='*'||g=='9'||r=='/')
return 0;
else
return 1;
}
void main()
{
stack s;
clrscr();
s.get();
s.post();
getch();
}
OUTPUT:
INFIX TO POSTFIX CONVERSION USING STACK APPLICATION
ENTER ANY EQUATION: A+B
BEFORE INFIX TO POSTFIX CONVERSION: A+B
AFTER INFIX TO POSTFIX CONVERSION: AB+
INFIX TO POSTFIX CONVERSION USING STACK APPLICATION
ENTER ANY EQUATION: E-F
BEFORE INFIX TO POSTFIX CONVERSION: E-F
AFTER INFIX TO POSTFIX CONVERSION: EFINFIX
TO POSTFIX CONVERSION USING STACK APPLICATION
ENTER ANY EQUATION: A+B-C
BEFORE INFIX TO POSTFIX CONVERSION: A+B-C
AFTER INFIX TO POSTFIX CONVERSION: AB+C
Result:
Thus the C++ program to convert Infix to postfix expression using STACK
Application has been executed successfully and the output was verified.
// PROGRAM FOR QUEUE OPERATIONS USING ARRAY
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int queue[10];
int ch,rear=0,front=0,n;
void qadd();
void qdelete();
void qprint();
void main()
{
clrscr();
cout<<"\n\n\t\t QUEUE OPERATIONS USING ARRAY \n";
cout<<"\n ENTER THE SIZE OF THE QUEUE : ";
cin>>n;
W:
cout<<"\n\n\t\t QUEUE OPERATIONS \n";
cout<<"\n 1.INSERTION \n";
cout<<"\n 2.DELETION \n";
cout<<"\n 3.DISPLAY \n";
cout<<"\n 4.EXIT \n";
cout<<"\n ENTER YOUR CHOICE : ";
cin>>ch;
switch(ch)
{
case 1:
qadd();
break;
case 2:
qdelete();
break;
case 3:
qprint();
break;
case 4:
exit(0);
}
if(ch<=3)
goto W;
}
void qadd()
{
if(rear>=n)
{
cout<<"\n QUEUE IS FULL \n";
}
else
{
cout<<"\n ENTER THE ELEMENT : ";
cin>>queue[rear];
rear++;
}
}
void qprint()
{
int i;
clrscr();
if(rear==front)
{
cout<<"\n QUEUE IS EMPTY \n";
}
else
{
cout<<"\n QUEUE HAVING THE FOLLOWING ELEMENTS : \n";
for(i=front;i<rear;i++)
cout<<"\n ELEMENT IN THE POSITION "<<i<<" IS "<<queue[i]<<endl;
}
getch();
}
void qdelete()
{
if(rear==front)
{
cout<<"\n QUEUE IS EMEPTY \n";
getch();
}
else
{
cout<<"\n DELETED ELEMENT IN THE QUEUE IS : "<<queue[front];
front++;
}
}
OUTPUT:
QUEUE OPERATIONS USING ARRAY
ENTER THE SIZE OF THE QUEUE: 5
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE ELEMENT: 10
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE ELEMENT: 20
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE ELEMENT: 30
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE ELEMENT: 40
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE ELEMENT: 50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
QUEUE IS FULL
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE HAVING THE FOLLOWING ELEMENTS:
ELEMENT IN THE POSITION 0 IS 10
ELEMENT IN THE POSITION 1 IS 20
ELEMENT IN THE POSITION 2 IS 30
ELEMENT IN THE POSITION 3 IS 40
ELEMENT IN THE POSITION 4 IS 50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IN THE QUEUE IS: 10
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE HAVING THE FOLLOWING ELEMENTS:
ELEMENT IN THE POSITION 1 IS 20
ELEMENT IN THE POSITION 2 IS 30
ELEMENT IN THE POSITION 3 IS 40
ELEMENT IN THE POSITION 4 IS 50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IN THE QUEUE IS: 20
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE HAVING THE FOLLOWING ELEMENTS:
ELEMENT IN THE POSITION 2 IS 30
ELEMENT IN THE POSITION 3 IS 40
ELEMENT IN THE POSITION 4 IS 50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IN THE QUEUE IS: 30
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE HAVING THE FOLLOWING ELEMENTS:
ELEMENT IN THE POSITION 3 IS 40
ELEMENT IN THE POSITION 4 IS 50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IN THE QUEUE IS: 40
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE HAVING THE FOLLOWING ELEMENTS:
ELEMENT IN THE POSITION 4 IS 50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IN THE QUEUE IS: 50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE IS EMPTY
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
QUEUE IS EMEPTY
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 4
Result:
Thus the C++ program for implementing the QUEUE operations using array has
been executed successfully and the output was verified.
// PROGRAM FOR QUEUE OPERATIONS USING LINKED LIST
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
struct list
{
int data;
struct list*next;
}*start;
int ch,rear=0,front=0,n;
void qadd();
void qdelete();
void print();
void main()
{
clrscr();
cout<<"\n\n\t\t QUEUE OPERATIONS USING LINKED LIST \n\n";
cout<<"\n ENTER THE SIZE OF THE QUEUE : ";
cin>>n;
W:
cout<<"\n\n\t QUEUE OPERATIONS \n\n";
cout<<"\n 1.INSERTION \n";
cout<<"\n 2.DELETION \n";
cout<<"\n 3.DISPLAY \n";
cout<<"\n 4.EXIT \n\n";
cout<<"\n ENTER YOUR CHOICE : ";
cin>>ch;
switch(ch)
{
case 1:
qadd();
break;
case 2:
qdelete();
break;
case 3:
print();
break;
case 4:
exit(0);
}
if(ch<=3)
goto W;
}
void qadd()
{
if(rear==n)
{
cout<<"\n QUEUE IS FULL\n";
}
else
{
if(start==NULL)
{
struct list*node;
node=new list;
cout<<"\n ENTER THE VALUE TO INSERT : ";
cin>>node->data;
node->next=NULL;
start=node;
rear=rear+1;
}
else
{
struct list*node,*pre,*ptr;
node=new list;
cout<<"\n ENTER THE VALUE TO INSERT : ";
cin>>node->data;
for(ptr=start;(ptr);ptr=ptr->next)
{
pre=ptr;
}
pre->next=node;
node->next=NULL;
rear=rear+1;
}
}
}
void print()
{
int i;
clrscr();
if(rear==front)
{
cout<<"\n QUEUE IS EMPTY ";
}
else
{
struct list*ptr;
cout<<"\n QUEUE HAVING THE FOLLOWING ELEMENTS : ";
for(ptr=start;(ptr);ptr=ptr->next)
cout<<ptr->data<<"\n";
}
}
void qdelete()
{
if(rear==front)
{
cout<<"\n QUEUE IS EMPTY ";
getch();
}
else
{
if(start->next==NULL)
{
cout<<"\n DELETED ELEMENT IS : "<<start->data;
start=NULL;
front=front+1;
}
else
{
cout<<"\n DELETED ELEMENT IS : "<<start->data;
start=start->next;
front=front+1;
}
}
}
OUTPUT:
QUEUE OPERATIONS USING LINKED LIST
ENTER THE SIZE OF THE QUEUE: 5
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE VALUE TO INSERT: 10
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE VALUE TO INSERT: 20
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE VALUE TO INSERT: 30
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE VALUE TO INSERT: 40
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
ENTER THE VALUE TO INSERT: 50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
QUEUE IS FULL
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE HAVING THE FOLLOWING ELEMENTS: 10
20
30
40
50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 10
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE HAVING THE FOLLOWING ELEMENTS: 20
30
40
50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 20
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE HAVING THE FOLLOWING ELEMENTS: 30
40
50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 30
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE HAVING THE FOLLOWING ELEMENTS: 40
50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 40
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE HAVING THE FOLLOWING ELEMENTS: 50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 2
DELETED ELEMENT IS: 50
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 3
QUEUE IS EMPTY
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 1
QUEUE IS FULL
QUEUE OPERATIONS
1. INSERTION
2. DELETION
3. DISPLAY
4. EXIT
ENTER YOUR CHOICE: 4

Result:
Thus the C++ program for implementing the QUEUE operations using Linked List
has been executed successfully and the output was verified.
// PROGRAM FOR BINARY SEARCH TREE
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
node*left;
node*right;
};
node*tree=NULL;
node*insert(node*tree,int ele);
void preorder(node*tree);
void inorder(node*tree);
void postorder(node*tree);
int count=1;
void main()
{
int ch,ele;
clrscr();
do
{
clrscr();
cout<<"\n\n\t\t BINARY SEARCH TREE \n";
cout<<"\n\n\n 1.INSERT A NODE IN A BINARY TREE \n";
cout<<"\n 2.PREORDER TRAVERSAL \n";
cout<<"\n 3.INORDER TRAVERSAL \n";
cout<<"\n 4.POSTORDER TRAVERSAL \n";
cout<<"\n 5.EXIT \n";
cout<<"\n\n\n ENTER YOUR CHOICE : ";
cin>>ch;
switch(ch)
{
case 1:
cout<<"\n ENTER THE ELEMENT : ";
cin>>ele;
tree=insert(tree,ele);
break;
case 2:
cout<<"\n PREORDER TRAVERSAL OF A BINARY TREE : ";
preorder(tree);
break;
case 3:
cout<<"\n INORDER TRAVERSAL OF A BINARY TREE : ";
inorder(tree);
break;
case 4:
cout<<"\n POSTORDER TRAVERSAL OF A BINARY TREE : ";
postorder(tree);
break;
case 5:
exit(0);
}
}
while(ch!=5);
}
node *insert(node*tree,int ele)
{
if(tree==NULL)
{
tree=new node;
tree->left=tree->right=NULL;
tree->data=ele;
count++;
}
else
if(count%2==0)
tree->left=insert(tree->left,ele);
else
tree->right=insert(tree->right,ele);
return(tree);
}
void preorder(node*tree)
{
if(tree!=NULL)
{
cout<<tree->data;
preorder(tree->left);
preorder(tree->right);
getch();
}
}
void inorder(node*tree)
{
if(tree!=NULL)
{
inorder(tree->left);
cout<<tree->data;
inorder(tree->right);
getch();
}
}
void postorder(node*tree)
{
if(tree!=NULL)
{
postorder(tree->left);
postorder(tree->right);
cout<<tree->data;
getch();
}
}
OUTPUT:
BINARY SEARCH TREE
1. INSERT A NODE IN A BINARY TREE
2. PREORDER TRAVERSAL
3. INORDER TRAVERSAL
4. POSTORDER TRAVERSAL
5. EXIT
ENTER YOUR CHOICE: 1
ENTER THE ELEMENT: 10
BINARY SEARCH TREE
1. INSERT A NODE IN A BINARY TREE
2. PREORDER TRAVERSAL
3. INORDER TRAVERSAL
4. POSTORDER TRAVERSAL
5. EXIT
ENTER YOUR CHOICE: 1
ENTER THE ELEMENT: 20
BINARY SEARCH TREE
1. INSERT A NODE IN A BINARY TREE
2. PREORDER TRAVERSAL
3. INORDER TRAVERSAL
4. POSTORDER TRAVERSAL
5. EXIT
ENTER YOUR CHOICE: 1
ENTER THE ELEMENT: 30
BINARY SEARCH TREE
1. INSERT A NODE IN A BINARY TREE
2. PREORDER TRAVERSAL
3. INORDER TRAVERSAL
4. POSTORDER TRAVERSAL
5. EXIT
ENTER YOUR CHOICE: 2
PREORDER TRAVERSAL OF A BINARY TREE: 10 20 30
BINARY SEARCH TREE
1. INSERT A NODE IN A BINARY TREE
2. PREORDER TRAVERSAL
3. INORDER TRAVERSAL
4. POSTORDER TRAVERSAL
5. EXIT
ENTER YOUR CHOICE: 3
INORDER TRAVERSAL OF A BINARY TREE: 20 10 30
BINARY SEARCH TREE
1. INSERT A NODE IN A BINARY TREE
2. PREORDER TRAVERSAL
3. INORDER TRAVERSAL
4. POSTORDER TRAVERSAL
5. EXIT
ENTER YOUR CHOICE: 4
POSTORDER TRAVERSAL OF A BINARY TREE: 20 30 10
BINARY SEARCH TREE
1. INSERT A NODE IN A BINARY TREE
2. PREORDER TRAVERSAL
3. INORDER TRAVERSAL
4. POSTORDER TRAVERSAL
5. EXIT
ENTER YOUR CHOICE: 5
Result:
Thus the C++ program for implementing the Binary Search Tree has been
executed successfully and the output was verified.
// PROGRAM FOR QUICK SORT
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
int partition(int low,int high,int arr[]);
void quick_sort(int low,int high,int arr[]);
void main()
{
int *a,n,low,high,i;
clrscr();
cout<<"\n\n\t\t QUICK SORT \n";
cout<<"\n ENTER THE NUMBER OF ELEMENTS : ";
cin>>n;
a=new int[n];
cout<<"\n ENTER THE ELEMENTS : ";
for(i=0;i<n;i++)
cin>>a[i];
cout<<"\n\n\n INITIAL ORDER OF ELEMENTS : ";
for(i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<" ";
high=n-1;
low=0;
quick_sort(low,high,a);
cout<<"\n\n\n FINAL ARRAY OF SORTING : ";
for(i=0;i<n;i++)
cout<<a[i]<<" ";
getch();
}
/* FUNCTION FOR PARTITIONING THE AREA */
int partition(int low,int high,int arr[])
{
int i,high_vac,low_vac,pivot/*,itr*/;
pivot=arr[low];
while(high>low)
{
high_vac=arr[high];
while(pivot<high_vac)
{
if(high<=low)
break;
high--;
high_vac=arr[high];
}
arr[low]=high_vac;
low_vac=arr[low];
while(pivot>low_vac)
{
if(high<=low)
break;
low++;
low_vac=arr[low];
}
arr[high]=low_vac;
}
arr[low]=pivot;
return low;
}
void quick_sort(int low,int high,int arr[])
{
int piv_index,i;
if(low<high)
{
piv_index=partition(low,high,arr);
quick_sort(low,piv_index-1,arr);
quick_sort(piv_index+1,high,arr);
}
}
OUTPUT
QUICK SORT
ENTER THE NUMBER OF ELEMENTS: 6
ENTER THE ELEMENTS: 2
45
1
897
6
4
INITIAL ORDER OF ELEMENTS: 2 45 1 897 6 4
FINAL ARRAY OF SORTING: 1 2 4 6 45 897
Result:
Thus the C++ program for sorting a given numbers using Quick Sort has been
executed successfully and the output was verified.
//PROGRAM FOR TOWER OF HANOI
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<math.h>
using namespace std;
struct node1
{
int data1;
node1 *next1;
}*top1 = NULL, *p1 = NULL, *np1 = NULL;
struct node2
{
int data2;
node2 *next2;
}*top2 = NULL, *p2 = NULL, *np2 = NULL;
struct node3
{
int data3;
node3 *next3;
}*top3 = NULL, *p3 = NULL, *np3 = NULL;
void push1(int data)
{
np1 = new node1;
np1->data1 = data;
np1->next1 = NULL;
if (top1 == NULL)
{
top1 = np1;
}
else
{
np1->next1 = top1;
top1 = np1;
}
}
int pop1()
{
int b = 999;
if (top1 == NULL)
{
return b;
}
else
{
p1 = top1;
top1 = top1->next1;
return(p1->data1);
delete(p1);
}
}
void push2(int data)
{
np2 = new node2;
np2->data2 = data;
np2->next2 = NULL;
if (top2 == NULL)
{
top2 = np2;
}
else
{
np2->next2 = top2;
top2 = np2;
}
}
int pop2()
{
int b = 999;
if (top2 == NULL)
{
return b;
}
else
{
p2 = top2;
top2 = top2->next2;
return(p2->data2);
delete(p2);
}
}
void push3(int data)
{
np3 = new node3;
np3->data3 = data;
np3->next3 = NULL;
if (top3 == NULL)
{
top3 = np3;
}
else
{
np3->next3 = top3;
top3 = np3;
}
}
int pop3()
{
int b = 999;
if (top3 == NULL)
{
return b;
}
else
{
p3 = top3;
top3 = top3->next3;
return(p3->data3);
delete(p3);
}
}
int top_of_stack()
{
if (top1 != NULL && top1->data1 == 1 )
{
return 1;
}
else if (top2 != NULL && top2->data2 == 1)
{
return 2;
}
else if (top3 != NULL && top3->data3 == 1)
{
return 3;
}
}
void display1()
{
cout<<endl;
node1 *p1;
p1 = top1;
cout<<"Tower1-> "<<"\t";
while (p1 != NULL)
{
cout<<p1->data1<<"\t";
p1 = p1->next1;
}
cout<<endl;
}
void display2()
{
node2 *p2;
p2 = top2;
cout<<"Tower2-> "<<"\t";
while (p2 != NULL)
{
cout<<p2->data2<<"\t";
p2 = p2->next2;
}
cout<<endl;
}
void display3()
{
node3 *p3;
p3 = top3;
cout<<"Tower3-> "<<"\t";
while (p3 != NULL)
{
cout<<p3->data3<<"\t";
p3 = p3->next3;
}
cout<<endl;
cout<<endl;
}
void toh(int n)
{
int i, x, a, b;
for (i = 0; i < (pow(2,n)); i++)
{
display1();
display2();
display3();
x = top_of_stack();
if (i % 2 == 0)
{
if (x == 1)
{
push3(pop1());
}
else if (x == 2)
{
push1(pop2());
}
else if (x == 3)
{
push2(pop3());
}
}
else
{
if (x == 1)
{
a = pop2();
b = pop3();
if (a < b && b != 999)
{
push3(b);
push3(a);
}
else if (a > b && a != 999)
{
push2(a);
push2(b);
}
else if (b == 999)
{
push3(a);
}
else if (a == 999)
{
push2(b);
}
}
else if (x == 2)
{
a = pop1();
b = pop3();
if (a < b && b != 999)
{
push3(b);
push3(a);
}
else if (a > b && a != 999)
{
push1(a);
push1(b);
}
else if (b == 999)
{
push3(a);
}
else if (a == 999)
{
push1(b);
}
}
else if (x == 3)
{
a = pop1();
b = pop2();
if (a < b && b != 999)
{
push2(b);
push2(a);
}
else if (a > b && a != 999)
{
push1(a);
push1(b);
}
else if (b == 999)
{
push2(a);
}
else if (a == 999)
{
push1(b);
}
}
}
}
}
int main()
{
int n, i;
cout<<"enter the number of disks\n";
cin>>n;
for (i = n; i >= 1; i--)
{
push1(i);
}
toh(n);
getch();
}
OUTPUT
enter the number of disks
5

Tower1-> 1 2 3 4 5
Tower2->
Tower3->

Tower1-> 2 3 4 5
Tower2->
Tower3-> 1

Tower1-> 3 4 5
Tower2-> 2
Tower3-> 1

Tower1-> 3 4 5
Tower2-> 1 2
Tower3->

Tower1-> 4 5
Tower2-> 1 2
Tower3-> 3

Tower1-> 1 4 5
Tower2-> 2
Tower3-> 3

Tower1-> 1 4 5
Tower2->
Tower3-> 2 3

Tower1-> 4 5
Tower2->
Tower3-> 1 2 3

Tower1-> 5
Tower2-> 4
Tower3-> 1 2 3

Tower1-> 5
Tower2-> 1 4
Tower3-> 2 3

Tower1-> 2 5
Tower2-> 1 4
Tower3-> 3

Tower1-> 1 2 5
Tower2-> 4
Tower3-> 3

Tower1-> 1 2 5
Tower2-> 3 4
Tower3->

Tower1-> 2 5
Tower2-> 3 4
Tower3-> 1

Tower1-> 5
Tower2-> 2 3 4
Tower3-> 1

Tower1-> 5
Tower2-> 1 2 3 4
Tower3->

Tower1->
Tower2-> 1 2 3 4
Tower3-> 5

Tower1-> 1
Tower2-> 2 3 4
Tower3-> 5

Tower1-> 1
Tower2-> 3 4
Tower3-> 2 5

Tower1->
Tower2-> 3 4
Tower3-> 1 2 5

Tower1-> 3
Tower2-> 4
Tower3-> 1 2 5

Tower1-> 3
Tower2-> 1 4
Tower3-> 2 5

Tower1-> 2 3
Tower2-> 1 4
Tower3-> 5

Tower1-> 1 2 3
Tower2-> 4
Tower3-> 5

Tower1-> 1 2 3
Tower2->
Tower3-> 4 5

Tower1-> 2 3
Tower2->
Tower3-> 1 4 5

Tower1-> 3
Tower2-> 2
Tower3-> 1 4 5
Tower1-> 3
Tower2-> 1 2
Tower3-> 4 5

Tower1->
Tower2-> 1 2
Tower3-> 3 4 5

Tower1-> 1
Tower2-> 2
Tower3-> 3 4 5

Tower1-> 1
Tower2->
Tower3-> 2 3 4 5

Tower1->
Tower2->
Tower3-> 1 2 3 4 5
RESULT:
Thus the C++ program for application of Stack, Tower of Hanoi has been
executed successfully and the output was verified.

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy