ECE II OOPS Manual
ECE II OOPS Manual
#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
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:
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.