Вы находитесь на странице: 1из 98

VI INSTITUTE OF TECHNOLOGY

DEPARTMENT OF COMPUTER SCIENCE


AND ENGINEERING

LAB MANUAL

EC2209 DATA STRUCTURES AND


OBJECT ORIENTED PROGRAMMING
LAB
(III SEMESTER ECE)

Prepared by:

MS. K.SATHIYAPRIYA
AP / CSE
Ex. No: 1a DEFAULT ARGUMENTS

Aim:

To implement function with default arguments.

Algorithm:
1.              Declare the default function.
2.              Invoke the default function.
3.              Display the result
             
Program:

#include<iostream.h>
void printLine(char =’_’,int =70);
void main()
{
printLine();
printLine(‘/’);
printLine(‘*’,40);
printLine(‘R’,55);
}
void printLine(char ch, int Repeatcount)
{
int i;
cout<<endl;
for(i=0;i<Repeatcount;i++)
cout<<ch;
}
 
Output:
 
- - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - -
///////////////////////////////////////
****************************
RRRRRRRRRRRRRRRRRRRRRRR
 

Result:

EC 2209 Data Structures and Object Oriented Programming Lab 2


Thus the Given Program function with Default Arguments was implemented
successfully.
 
Ex. No: 1b  CLASS WITH STATIC DATA MEMBER

Aim:

          To implement static data member in class.


 
Algorithm:
1.              Create class ITEM with static data member as count.
2.              Create a member function to increment the count.
3.              Declare the static datamember using scope resolution operator.
4.              Display the count value.

Program:

#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();

EC 2209 Data Structures and Object Oriented Programming Lab 3


b.showcount();
c.showcount();
}
Output:

count                            0
count                            0
count                            0
Number              20
Number              30
Number              40
count                            3
count                            3
count                            3
                             
 
 
 
 
 
 
 
 
 
 
 

 
 
 Result:

EC 2209 Data Structures and Object Oriented Programming Lab 4


Thus the Given Program static data member in class was implemented
successfully.
 
Ex. No: 1c CLASS WITH STATIC MEMBER FUNCTION

Aim:
To implement static member function in class.

Algorithm:
1.              Create class ITEM with static data member as count.
2.              Create a member function to increment the count.
3.              Declare the static data member using scope resolution operator.
4.              Display the count value.
Program:

#include<iostream.h>
class test
{
int code;
static int count;
public:
void setcode()
{
cout<<”Object Number:”<<code<<”\n”;
}};
int test::count;
int main()
{
test t1,t2;
t1.setcount();
t2.setcount();
test::showcount();
test t3;
t1.showcode();
t2.showcode();
t3.showcode();
return(0);
}

Output:
  count                               2
count                               3
Object Number               1
Object Number               2
Object Number               3
 

EC 2209 Data Structures and Object Oriented Programming Lab 5


 Result:
Thus the Given Program static member function in class was implemented
successfully.
Ex. No: 1d OBJECT AS ARGUMENT AND RETURNING AN
OBJECT

Aim:

To write a program for object as argument and returning an object using complex
number addition.
 
Algorithm:

1. The class complex contains two member variables real and imaginary.
2. Assign the value for real and imaginary part.
3. Declare a temporary variable temp.
4. Add real part with real of other object and store it in temp’s real.
5. Add imaginary part with imaginary of other object and store it in temp’s
imaginary.
6. Display temp.

 Program:

#include<iostream.h>
template<class T>
class complex
{
private:
              T real;
T imag;
Public:
complex()
{
real=imag=0;
}
void getdata()
{
cout<<”real part?”;
cin>>real;
cout<<”imag part?”;
cin>>imag;
}
complex operator +(complex c2);
void outdata(char *msg)
{

EC 2209 Data Structures and Object Oriented Programming Lab 6


cout<<msg<<”(“<<real;
cout<<”,”<<img<<”)”<<endl;
}
};

Template<class T>
complex<T> complex<T>::operator +(complex<T>c2)
{
Complex<T>temp;
temp.real=real+c2.real;
temp.img=imag+c2.imag;
return(temp);
}
void main()
{
complex<int>c1,c2,c3;
cout<<”Addition of integercomplexobjects….”<<endl;
cout<<”Enter complex number c1..”<<endl;
c1.getdata();
cout<<”Enterthecomplexnumberc2”<<endl;
c2.getdata();
c3=c1+c2;
c3.outdata(“c3=c1+c2:”);
 
complex<float>c4,c5,c6;
cout<<”Additionof float complexobjects….”<<endl;
cout<<”Enter complex number c4..”<<endl;
c4.getdata();
cout<<”Enterthecomplexnumberc5”<<endl;
c5.getdata();
c6=c4+c5;
c6.outdata(“c6=c4+c5:”);
 
}
 

EC 2209 Data Structures and Object Oriented Programming Lab 7


Output:

Addition of integer complexobjects…


Enter complex number c1..
Real part?1
Imag part?2
Enter complex number c2..
Real part?3
Imag part?4
C3=c1+c2:(4,6)
 
Addition of float complexobjects…
Enter complex number c4..
Real part?1.5
Imag part?2.5
Enter complex number c5..
Real part?2.4
Imag part?3.7
C6=c4+c5:(3.9,6.2)

 
Result:

EC 2209 Data Structures and Object Oriented Programming Lab 8


Thus the Given Program Object as a argument and returning an object was
implemented successfully.
 
Ex. No:1e FRIEND FUNCTION

Aim:
              To write a c++ program for friend function.
 
Algorithm:

1.        Create the class and declare the data member as private.


2.        Declare the friend function using the keyword friend.
3. Perform the operation of adding two private variables in the friend function.
4.        Display the result.

Program:
 
#include <iostream.h>
using namespace std;
class myclass {
int a, b;
public:
friend int sum(myclass x);
void set_ab(int i, int j);
};
void myclass::set_ab(int i, int j)
{
a = i;
b = j;
}
// Note: sum() is not a member function of any class.
int sum(myclass x)
{
/* Because sum() is a friend of myclass, it can
directly access a and b. */
return x.a + x.b;
}
int main()
{
myclass n;
n.set_ab(3, 4);
cout << sum(n);
return 0;
}
Output:

EC 2209 Data Structures and Object Oriented Programming Lab 9


7
Result:

Thus the Given Program friend function was implemented successfully.


Ex. No: 1f CLASS AND OBJECTS

Aim:
              To write a c++ program for employee wages calculation using class and objects.
 
Algorithm:
 
1. Employee class contains name and wage variable and member function a
putname(), putwage(),getwage() and getname().
2. Putname: Assign the valve for the character array name.
3. Getname: Retrieves the value of Variable name.
4. Putwage: Assign the valve for wage variable.
5. Getwage: Retrieves the value of wage variable.
6. Im main() Put and display both name and wages.
 
  
 Program:

#include <iostream.h>
using namespace std;
class employee {
char name[80]; // private by default
public:
void putname(char *n); // these are public
void getname(char *n);
private:
double wage; // now, private again
public:
void putwage(double w); // back to public
double getwage();
};
void employee::putname(char *n)
{
strcpy(name, n);
}
void employee::getname(char *n)
{
strcpy(n, name);
}
void employee::putwage(double w)
{

EC 2209 Data Structures and Object Oriented Programming Lab


10
wage = w;
}
double employee::getwage()
{
return wage;
}
int main()
{
employee ted;
char name[80];
ted.putname("Ted Jones");
ted.putwage(75000);
ted.getname(name);
cout << name << " makes $";
cout << ted.getwage() << " per year.";
return 0;
}
 
 
Output:
 
Ted Jones makes $75000 per year.
 
 

Result:

Thus the Given Program for employee wages calculation using class and objects was
implemented successfully.

EC 2209 Data Structures and Object Oriented Programming Lab


11
 

Ex. No: 1g COPY CONSTRUCTOR

Aim:
To write a c++ program for demonstrating the copy constructor.

Algorithm:
1. Define the class
2. Declare the variables.
3. Define the function as constructor.
4. Define the main function and declare the variables.
5. Call the copy constructor.
Program:

#include<iostream.h>
class test
{
int x;
public:
//default constructor
test();
//parameterized constructor
test(int val)
{
x=val;
}
//copy constructor
test(test &obj)
{
x.obj.x;// entered is in value in obj.x
}
void show()
{
cout<<x;
}
};
void main()
{
int val;
cout<<”enter some number”<<endl;
cin>>val;
test old(val);
//call for copy constructor

EC 2209 Data Structures and Object Oriented Programming Lab


12
test new(old);
cout<<”\n the original value is”;
old.show();
cout<<”\n the new copied value is:”;
new.show();
cout<<endl;
getch();
}

Output:
enter value is 500
the original value is 500
the new copied value is 500

Result:
Thus the given program copy constructor was executed successfully.

EC 2209 Data Structures and Object Oriented Programming Lab


13
Ex.No:1h INHERITANCE

Aim:
To Write a C++ program for implementing the inheritance.

Algorithm:
1. Define the base class with variables and functions.
2. Define the derived class with variables and functions.
3. Define main function
4. Declare the variables.
5. Inherits base class.
6. Access member of derived class.
Program:
#include<iostream.h>
class base
{
public:
int x;
void set_x(int n)
{x=n;
}
void show_x()
{
cout<<”\n\t Base class….”;
cout<<”\n\tx=”<<x;
}
};
class derived:public base
{
int y;
public:
void set_y(int n)
{
y=n;
}
void show_xy()
{
cout<<”\n\n\t derived class…”;
cout<<”\n\tx=”<<x;
cout<<”\n\ty=”<<y;
}
};

EC 2209 Data Structures and Object Oriented Programming Lab


14
void main()
{
derived obj;
int x,y;
cout<<”\n enter the value of x”;
cin>>x;
cout<<”\n enter the value of y”;
cin>>y;
obj.set_x(x);//inherits base class
obj.set_y(y);//acess member of derived class
obj.show_x();//inherits base class
obj.show_xy();//acess member of derived class
}

Output:
enter the value of x 10
enter the value of y 20
base class….
x=10

derived class…..
x=10
y=20

Result:
Thus the given Program inheritance was implemented successfully.

EC 2209 Data Structures and Object Oriented Programming Lab


15
Ex.No:1i FUNCTION OVERLOADING

Aim:
To Write a C++ program for implementing the function overloading.

Algorithm:
1. Define class.
2. Define the functions with different arguments.
3. Define main function
4. Declare the variables.
5. Call the Different task of function.
6. Print the output.
Program:
#include<iostream.h>
class test
{
public:
int sum(int,int);
float sum(float,float);
double sum(double,double);
};
int test::sum(int a.int b)
{
return(a+b);
}
float test::sum(float a ,float b)
{
return(a+b);
}
double test::sum(double a,double b)
{
return(a+b);
}
void main()
{
test obj;
int choice;
int a,b;
float x,y;
double m,n;
double result=0;
cout<<”\n\t\t main menu”;

EC 2209 Data Structures and Object Oriented Programming Lab


16
cout<<”\n\t1. Addition of two integer numbers”;
cout<<”\n\t2. Addition of two float numbers”;
cout<<”\n\t3. Addition of two double numbers”<<endl;
cout<<\n enter your choice:”;
cin>>choice;
switch(choice)
{
case 1: cout<<”\n enter 2 numbers”;
cin>>a>>b;
result=obj.sum(a,b);
break;
case 2:
cout<<”\n enter 2 number”;
cin>>x>>y;
result=obj.sum(x,y);
break;
case 3:
cout<<”\n enter 2 number”;
cin>>m>>n;
result=obj.sum(m,n);
break;
default:
cout<<”wrong choice”;
break;
}
cout<<”\n\n result”<<result<<endl;
getch();
}

Output:
Main menu
1.Addition of two integer numbers
2.Addition of two float numbers
3.Addition of two double numbers
enter your choice 2

enter 2 number 1.13 5.6


result 6.73

EC 2209 Data Structures and Object Oriented Programming Lab


17
Result:
Thus the Given program function overloading was executed successfully.

Ex. No: 2 IMPLEMENTATION OF VARIOUS LIST OPERATIONS


USING ARRAYS

Program
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
class arr_list
{
/*data structure for list using array*/
private:
struct node
{
int data;
int next;
}a[10];
public:
int head;
arr_list();
int create();
void display(int);
void insert();
void delete();
void search();
};
arr_list::arr_list()
{
for(int i-0;i<10;i++)
{
a[i].data=-1;
}}
int arr_list::create()
{
int head,I;
cout<<”\n enter the index for first node”;
cin>>I;
head=i;
while(i!=-1)
{
cout<<”\n enter the data and index of the first element”;

EC 2209 Data Structures and Object Oriented Programming Lab


18
cin>>a[i].data;
cout<<””;
cin>>a[i].next;
i=a[i].next;
}
return head;
}
void arr_list::display(int i)
{
while(i!=-1)
{
if(a[i].data==-1)
cout<<””;
else
{
cout<<a[i].data<<”->”;
}
i=a[i].next;
}
cout<<”NULL”;
}
void arr_list::insert()
{
int I,new_data,temp;
cout<<”\n enter the new data which is to be inserted”;
cin>>new_data;
cout<<”\nenter the data after which you want to insert”;
cin>>temp;
for(i=0;i<10;i++)
{
if(a[i].data==temp)
break;
}
if(a[i+1].data==-1) /* next location is empty*/
{
a[i+1].next=a[i].next;
a[i].next=i+1;
a[i+1].data=new_data;
}}
void arr_list::delete()
{
int I,temp,current,new_next;
cout<<”\n enter the node to be dleted”;
cin>>temp;
for(i=0;i<10;i++)
{

EC 2209 Data Structures and Object Oriented Programming Lab


19
if(a[i].data==temp)
{
if(a[i].next==-1)
{
a[i].data=-1; /* writing -1 means deleting the element*/
}
current=I;/* marking the index of an array at which record is placed*/
new_next=a[i].next; /*storing the next pointer at that index*/
}
}
for(i=0;i<10;i++)
{
if(a[i].next==current)
{
a[i].next=new_next;
a[current].data=-1;
}
}
}
void arr_list::search
()
{
int i ,temp ,flag=0;
cout<<”\n enter the node to be searched”;
cin>>temp;
for(i=0;i<10;i++)
{
if(a[1].data==temp)
{
flag=1; /* flag 1 means the element is present*/
break;
}
}
if (flag==1)
cout<<”\n the “<<temp<<” node is present is the list”;
else
cout<<”\n the node is not present”;
}
void main()
{
char ans;
int choice;
arr_list obj;
do
{
clrscr();

EC 2209 Data Structures and Object Oriented Programming Lab


20
cout<<”\t\t program for implementing list using array”;
cout<<”\n main menu”;
cout<<”\n 1. creation”;
cout<<”\n 2. display”;
cout<<”\n 3.insertion of element in the list”;
cout<<”\n 4. deletion of element from the list”;
cout<<”\n5. Searching of element from the list”;
cout<<”\n 6.exit”;
cout<<”\n enter your choice”;
switch(choice)
{
case 1:
obj.head=obj.create();
break;
case 2:
obj.display(obj.head);
break;
case 3:
obj.insert();
break;
case 4:
obj.delete();
break;
case 5:
obj.search();
break;
case 6:
exit(0);
}
cout<<”\n do you wish to go to main menu?”;
ans=getch();
}
while(ans==’Y’||ans==’y’);
getch();
}
Output
program for implementing list using array
main menu
1. creation
2. display
3. insertion of element in the list
4. deletion of element from the list
5. Searching of element from the list
6. exit

enter your choice 1

EC 2209 Data Structures and Object Oriented Programming Lab


21
enter the index for first node 4
enter the data and index of the first element 10 1
enter the data and index of the first element 20 6
enter the data and index of the first element 30 7
enter the data and index of the first element 40 -1

do you wish to go to main menu?

program for implementing list using array


main menu
1. creation
2. display
3. insertion of element in the list
4. deletion of element from the list
5. Searching of element from the list
6. exit

enter your choice 2


10->20->30->40->null

do you wish to go to main menu?

program for implementing list using array


main menu
1. creation
2. display
3. insertion of element in the list
4. deletion of element from the list
5. Searching of element from the list
6. exit

enter your choice 3


enter the new data which is to be inserted 21
enter the data after which you want to insert 20
do you wish to go to main menu?

program for implementing list using array


main menu
1. creation
2. display
3. insertion of element in the list
4. deletion of element from the list
5. Searching of element from the list
6. exit

enter your choice 2

EC 2209 Data Structures and Object Oriented Programming Lab


22
10->20->21->30->40->Null
do you wish to go to main menu?

program for implementing list using array


main menu
1. creation
2. display
3. insertion of element in the list
4. deletion of element from the list
5. Searching of element from the list
6. exit

enter your choice 4


enter the node to be deleted 30

do you wish to go to main menu?

program for implementing list using array


main menu
1. creation
2. display
3. insertion of element in the list
4. deletion of element from the list
5. Searching of element from the list
6. exit

enter your choice 2


10->20->21->40->null

do you wish to go to main menu?

program for implementing list using array


main menu
1. creation
2. display
3. insertion of element in the list
4. deletion of element from the list
5. Searching of element from the list
6. exit

enter your choice 5


enter the node to be searched 20
the 20 node is present in the list
do you wish to go to main menu?

program for implementing list using array

EC 2209 Data Structures and Object Oriented Programming Lab


23
main menu
1. creation
2. display
3. insertion of element in the list
4. deletion of element from the list
5. Searching of element from the list
6. exit

enter your choice 5


enter the node to be searched 30
the node is not present
do you wish to go to main menu?

program for implementing list using array


main menu
1. creation
2. display
3. insertion of element in the list
4. deletion of element from the list
5. Searching of element from the list
6. exit

enter your choice 6

Result:

EC 2209 Data Structures and Object Oriented Programming Lab


24
Thus the Array implantation of List ADT program was executed successfully.

Ex. No: 3 LINKED LIST IMPLEMENTATION USING LISTADT


 
Aim
 
To implement a linked list and do all operations on it.
 
Algorithm:
 
Step 1 : Start the process.
 
Step 2: Initialize and declare variables.
 
Step 3: Enter the choice.
 
Step 4: If choice is INSERT then
a. Enter the element to be inserted.
 
b. Get a new node and set DATA[NEWNODE] = ITEM.
 
c. Find the node after which the new node is to be inserted.
 
d. Adjust the link fields.
 
e. Print the linked list after insertion.
 
Step 5: If choice is DELETE then
 
a. Enter the element to be deleted.
 
b. Find the node containing the element (LOC) and its preceding node (PAR).
 
c. Set  ITEM = DATA[LOC] and delete the node LOC.
 
d. Adjust the link fields so that PAR points to the next element. ie
LINK[PAR] = LINK [ LOC].
 
e. Print the linked list after deletion.
 
Step 6: Stop the process.
 

EC 2209 Data Structures and Object Oriented Programming Lab


25
 
 
 program:

/**************************************************************
Demonstration program to perform various operations on singly link list.
*************************************************************/
// List of include files
# include<iostream.h>
#include<conio.h>
#define TRUE 1
#define FALSE 0
//class definition
{
class sll
{
private:
struct node
{
int data;
struct node *next;
}*head;
public:
sll();
void create();
void display();
void search(int key);
void insert _head();
void insert_after();
void insert_last();
void dele();
~sll();
};
/*………………………………..
the constructor defined
………………………………….*/

sll::sll()
{
head=NULL;//initialize head to NULL
}
/*…………………………………

EC 2209 Data Structures and Object Oriented Programming Lab


26
destructor defined
…………………………………..*/

sll::~sll()
{
node *temp,*temp1;
temp=head->next;
delete head;
while(temp!=NULL)//freethe memory allocated
{
temp1=temp->next;
delete temp;
temp=temp1;
}
}
/*……………………………………..
the create function
………………………………………
*/
void sll::create()
{
node *temp,*new;
int val,flag;
char ans=’y’;
flag=TRUE;
do
{
cout<<”\n enter the data:”;
cin>>val;
??allocate memory to new node
new=new node;
if(new==NULL)
cout<<”unable to allocate memory\n”;
new->data=val;
new->next=NULL;
if(flag==true)//executed only for the first time
{
head=new;
temp=new;
flag=FALSE;
}
else
{
/*temp last keeps track of the most recently created node*/
temp->next=new;
temp=new;

EC 2209 Data Structures and Object Oriented Programming Lab


27
}
cout<<”\n do you want to enter more elements?(y/n)”;
ans=getche();
}
while(ans==’y’||ans==’Y’);
cout<<”\n the singly linked list is created\n”;
getch();
clrscr();
}
/*…………………………………………..
the display function
………………………………………………
*/
void sll::display()
{
node *temp;
temp=head;
if(temp==NULL)
{
cout<<”\n the list is empty\n”;
getch();
clrscr();
return;
}
while(temp!=NULL)
{
cout<<temp->data<<””;
temp=temp->next;
}
getch();
}
void sll::search(int key)
{
node *temp;
int found;
temp=head;
if(temp==NULL)
{
cout<<”linked list is empty\n”;
getch();
clrscr();
}
found=FALse;
while(temp!=NULL&&found==FALSE)
{
if(temp->data!=key)

EC 2209 Data Structures and Object Oriented Programming Lab


28
temp=temp->next;
else
found=TRUE;
}
if(found==TRUE)
{
cout<<”\n the element is present in the list\n”;
getch();
}
else
{
cout<<”the element is not present in the list\n”;
getch();
}
}

/*
……………………………………………
the dele function
……………………………………………
*/
void sll::dele()
{
node *temp,*prev;
int key;
temp=head;
clrscr();
cout<<”\n enter the data of the node you want to delete:”;
cin>>key;
while(temp!=NULL)
{
if (temp->data==key)//traverse till required node to delete
break; //is found
prev=temp;
temp=temp->next;
}
if(temp==NULL)
cout<<”\n node not found”;
else
{
if(temp==head)//first node
head=temp->next;
else
prev->next=temp->next; //intermediate or end node

EC 2209 Data Structures and Object Oriented Programming Lab


29
delete temp;
cout<<”\n the element is deleted\n”;
}
getch();
}
/*
…………………………………….
function to insert at end
………………………………………
void sll::insert_last()
{
node *new,*temp;
cout<<”\n enter the element which you want to insert”;
cin>>new->data;
if(head==NULL)
head=new;
else
{
temp=head;
while(temp->next!=NULL)
temp=temp->next;
temp->next=new;
new->next=NULL;
}
}
/*
………………………………………..
function to insert after a node
………………………………………….
*/
void sll::insert_after()
{
int key;
node *temp,*new;
node=new node;
cout<<”\n enter the element which you want to insert”;
cin>>new->data;
if(head==NULL)
{
head=New;
}
else
{
cout<<”\n enter the element after which you want to insert the node”;
cin>>key;
temp=head;

EC 2209 Data Structures and Object Oriented Programming Lab


30
do
{
if(temp->data==key)
{
New->next=temp->next;
temp->next=New;
break;
}
else
temp=temp->next;
}
while(temp!=NULL);
}
}
/*……………………………………..
function to insert at the beginning
……………………………………….*/
void sll::insert_head()
{
node *New,*temp;
New=new node;
cout<<”\n enter the element which you want to insert”;
cin>>New->data;
if(head==NULL)
head=New;
else
{
temp=head;
New->next=temp;
head=New;
}
}
/*
……………………………………………
the main function
Input:None
Output:None
parameter passing method:None
…………………………………………………...
*/
void main()
{
sll s;
int choice,val ch1;
char ans=’y’;
do {

EC 2209 Data Structures and Object Oriented Programming Lab


31
clrscr();
cout<<”\n program to perform various operations on linked list”;
cout<<”\n 1.create”;
cout<<”\n2. display”;
cout<<”\n3.search”;
cout<<”\n4.insert an element in a list”;
cout<<”\n5.delete an element from list”;
cout<<”\n6.quit”;
cout<<\n enter your choice(1-6)”;
cin>>choice;
switch(choice)
{
case1: s.create();
break;
case 2:s.display();
break;
case 3:cout<<”enter the element you want to search”;
cin>>val;
s.search(val);
break;
case4:
clrscr();
cout<<”\n the list is:\n”;
s.display();
cout<<”\n menu”;
cout<<”\n1.insert at beginning \n2. insert after”;
cout<<”\n3.insert at end”;
cout<<”\n enter your choice”;
cin>>ch1;
switch(ch1)
{
case 1:s.insert_head();
break;
case 2: s.insert_after();
break;
case 3:s.insert_last();
break;
default:cout<<”\n invalid choice”;
}
break;
case 5:
s.dele();
break;
default:cout<<”\n invalid choice”;
}
cout<<”\n continue?”;

EC 2209 Data Structures and Object Oriented Programming Lab


32
cin>>ans;
}
while(ans==’y’||ans==’Y’)
getch();
return;
}

output

program to perform various operations on linked list


1.create
2. display
3.search
4.insert an element in a list
5.delete an element from list
6.quit
enter your choice(1-6) 1

enter the data: 10

do you want to enter more elements?(y/n)y


enter the data 20

do you want to enter more elements?(y/n)y


enter the data 30

do you want to enter more elements?(y/n)y


enter the data 40

do you want to enter more elements?(y/n)y


enter the data 50

do you want to enter more elements?(y/n)n

the singly linked list is created


continue?

program to perform various operations on linked list


1.create
2. display
3.search
4.insert an element in a list
5.delete an element from list
6.quit
enter your choice(1-6) 2

EC 2209 Data Structures and Object Oriented Programming Lab


33
10 20 30 40 50
continue?

program to perform various operations on linked list


1.create
2. display
3.search
4.insert an element in a list
5.delete an element from list
6.quit
enter your choice(1-6) 3
enter the element you want to search 30

the element is present in the list


continue?
program to perform various operations on linked list
1.create
2. display
3.search
4.insert an element in a list
5.delete an element from list
6.quit
enter your choice(1-6) 4

the list is:


10 20 30 40 50
menu
1.inset at beginning
2.insert after
3.insert at end
enter your choice 1

enter the element which you want to insert 9

continue?
program to perform various operations on linked list
1.create
2. display
3.search
4.insert an element in a list
5.delete an element from list
6.quit
enter your choice(1-6) 4

the list is:


9 10 20 30 40 50

EC 2209 Data Structures and Object Oriented Programming Lab


34
menu
1.inset at beginning
2.insert after
3.insert at end
enter your choice 2

enter the element which you want to insert 31


enter the element after which you want to insert the node 30

continue?
program to perform various operations on linked list
1.create
2. display
3.search
4.insert an element in a list
5.delete an element from list
6.quit
enter your choice(1-6) 4

the list is:


9 10 20 30 31 40 50
menu
1.inset at beginning
2.insert after
3.insert at end
enter your choice 3

enter the element which you want to insert 60


continue?

program to perform various operations on linked list


1.create
2. display
3.search
4.insert an element in a list
5.delete an element from list
6.quit
enter your choice(1-6) 2
9 10 20 30 31 40 50 60

continue?

program to perform various operations on linked list


1.create
2. display
3.search

EC 2209 Data Structures and Object Oriented Programming Lab


35
4.insert an element in a list
5.delete an element from list
6.quit
enter your choice(1-6) 5
enter the data of the node you want to delete :10
the element is deleted

continue?

program to perform various operations on linked list


1.create
2. display
3.search
4.insert an element in a list
5.delete an element from list
6.quit
enter your choice(1-6) 2
9 20 30 31 40 50 60

Result

Thus the given program Linked List implementation of the list ADT was executed
successfully.

EC 2209 Data Structures and Object Oriented Programming Lab


36
Ex.No:4 CURSOR IMPLEMENTATION – LIST ADT

Aim:
              To write a C++ program for cursor implementation of list ADT.
 
Algorithm:
 
1. Start the program.
2. Create a node with two fields data and link field.
o Allocate space for the node dynamically.
o Create link between the created nodes and let the last node be with NULL
Link
o Insert the input data in the data field and press –1 to stop the same.
3. Get the choice of operations either insertion or deletion.
4. For insertion get the position in which insertion is to be done and the element to be
inserted. Check for the start, middle or end position of insertion. Insert the node and
change its link accordingly.
5. For deletion get the position in which deletion is to be done. Delete the node and
then link it to the next node. Before deletion check whether there is data in the list
to be deleted.
6. Using display option list the elements of the list.
7. Stop the program.

Program:
 
/* ***************************************
Program To implement cursor of List ADT
*****************************************/
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 20
class LIST
{
private:
int list[MAX];
public:
int create();
void display(int);
void reverse(int);
int search(int);
void delet(int);

EC 2209 Data Structures and Object Oriented Programming Lab


37
};

/*
*************************************
Function: create
Input: None
Output: creates the list
Calls: None
**************************************
*/
int LIST::create()
{int n,I;
clrscr();
cout<<”\n how many elements you want in the list:”;
cin>>n;
if(n>MAX)
cout<<”\n Error:Number of elements exceeds the limit”;
for(i=0;i<n;i++)
{
cout<<”\nEnter the element number”<<i+1<<”:”;
cin>>List[i];
}
cout<<”\n The List is successfully created\n”;
getch();
return(n);
}
/*
*************************************
Function: Display
Input: Length of the list
Output: prints the list
Calls: None
**************************************
*/
void LIST::display(int n)
{
int I;
clrscr();
cout<<”\n the list is…\n”;
for(i=0;i<n;i++)
cout<<”\n”<<List[i];
cout<<|n press any key to continue…\n”;
getch();
}
/*

EC 2209 Data Structures and Object Oriented Programming Lab


38
*************************************
Function: reverse
Input: Length of the list
Output: prints the list in reverse manner
Calls: None
**************************************
*/
void LIST::reverse(int n)
{
int I;
clrscr();
cout<<”\n the reversed list is….\n”;
for(i=n-1;i>=0;i--)
cout<<”\n”<<List[i];
cout<<”\n press ant key to continue…\n”;
getch();
}
/*
*************************************************
Function: Search
Input: Length of the list
Output: Reads a number & searches the list for a number
Calls: None
**************************************************
*/
int LIST::search(int n)
{
int I,key;
clrscr();
cout<<”\n enter the number you want to search?”;
cin>>key;
/* Now search in the list*/
for (i-0;i<n;i++)
{
if(List[i]==key)
{
cout<<”\n the given number is at postion:”<<i<<”\n”;
getch();
return I;
}
}
cout<<”\n the given number is at postion:”<<i<<|n”;
getch();
return I;
}
}

EC 2209 Data Structures and Object Oriented Programming Lab


39
cout<<”\n the given number is not in the list\n”;
getch();
return -1;}
/*
*************************************
Function: delet
Input: Length of the list
Output: deletes the number from the list
Calls: search
called by:main
**************************************
*/
void LIST::delet(int n)
{
int I;
i=search(n);
List[i]=-1;
cout<<”\n the element is now deleted!”;
cout<<”\n we put -1 to indicate empty location”;
getch();
}
void main()
{
LIST obj;
int choice,len,position;
char ans;
do
{
clrscr();
cout<<”\n\t program to perform operations on ordered list”;
cout<<”\n 1.create;
cout<<”\n 2.display;
cout<<”\n 3.search for a number”;
cout<<”\n 4.reverse”;
cout<<”\n 5.delete”;
cout<<”\n 6.Quit”;
cout<<”\n enter your choice(1-6)”;
cin>>choice;
switch(choice)
{
case 1:
len=obj.create();
break;
case 2:
obj.display(len)
break;

EC 2209 Data Structures and Object Oriented Programming Lab


40
case 3:
position=obj.serch(len);
break;
case 4:
obj.reverse(len)
break;
case 5:
obj.delet(len)
break;
case 6:
cout<<”\n do you want to exit(y/n)?”;
ans=getche();
if(ans==’y’)
exit(0);
else
break;
default;
clrscr();
cout<<”\n invalid choice,try again”;
getch\();
}
}while(choice!=6)
}

Output

program to perform operations on ordered list


1.create
2.display
3.search for a number
4.reverse
5.delete
6.Quit

enter your choice(1-6) 1


how many elements you want in the list:5
Enter the element number 1 :10
Enter the element number 2 :20
Enter the element number 3 :30
Enter the element number 4 :40
Enter the element number 5 :50
The List is successfully created
program to perform operations on ordered list
1.create
2.display

EC 2209 Data Structures and Object Oriented Programming Lab


41
3.search for a number
4.reverse
5.delete
6.Quit

enter your choice(1-6)2


the lis is…
10
20
30
40
50
press the key to continue…
program to perform operations on ordered list
1.create
2.display
3.search for a number
4.reverse
5.delete
6.Quit

enter your choice(1-6) 3


enter the number you want to search? 20
the given number is at position 1
program to perform operations on ordered list
1.create
2.display
3.search for a number
4.reverse
5.delete
6.Quit

enter your choice(1-6) 4


the reversed list is …..
50
40
30
20
10
press the key to continue…
program to perform operations on ordered list
1.create
2.display
3.search for a number
4.reverse
5.delete

EC 2209 Data Structures and Object Oriented Programming Lab


42
6.Quit

enter your choice(1-6) 5


enter the number you want to search? 20
the given number is at position 1

the element is now deleted!


we put -1 to indicate empty location
program to perform operations on ordered list
1.create
2.display
3.search for a number
4.reverse
5.delete
6.Quit

enter your choice(1-6) 2


the list is…
10
-1
30
40
50
press the key to continue…
program to perform operations on ordered list
1.create
2.display
3.search for a number
4.reverse
5.delete
6.Quit

enter your choice(1-6) 6


do you want to exit(y/n)?n

 Result:

Thus the Given Program Cursor implementation of list was executed successfully.
 

EC 2209 Data Structures and Object Oriented Programming Lab


43
Ex. No:5a STACK ADT USING ARRAY IMPLEMENTATION

Aim:
              To write a program for stack using array implementation.
 
Algorithm:

           Step1:Define a array which stores stack elements..

          Step 2: The operations on the stack are


a)PUSH data into the stack
         b)POP data out of stack
 
Step  3:  PUSH DATA INTO STACK
                   3a.Enter the data to be inserted into stack.
                   3b.If TOP is NULL
                         the input data is the first node in stack.
                         the link of the node is NULL.
                        TOP points to that node.
                   3c.If TOP is NOT NULL
                        the link of TOP points to the new node.
                        TOP points to that node.

           Step 4:   POP DATA FROM STACK


                   4a.If TOP is NULL
                        the stack is empty
                   4b.If TOP is NOT NULL
                        the link of TOP is the current TOP.
                        the pervious TOP is popped from stack.

            Step 5.  The stack represented by linked list is traversed to display its content.
 
 Program:

/*
************************************************************************
Program for implementing a stack using arrays. it involves various operations such as
push ,pop, stack empty, stack full and display.
*************************************************************************
*/
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>

EC 2209 Data Structures and Object Oriented Programming Lab


44
#define size 5
/* stack structure*/
class stack_class
{
private:
struct stack
{
int s[size];
int top;
}st;
public:
stack_class();
int stfull();
void push(int item);
int stempty();
int pop();
void display();
};
//constructor is used to intialise stack
stack_class::stack_class()
{
st.top=-1;
for(int i=0;i<size;i++)
st.s[i]=0;
}
/*
the stfull function
input:none
output:returns 1 or 0 for stack full or not
called by :main
calls:none
*/
int stack_class::stfull()
{
if(st.top>=size-1)
return 1;
else
return 0;
}
/*
push function
input:item which is to be pushed
output:none –simply pushes the item onto the stack
called by: main
calls:none
*/

EC 2209 Data Structures and Object Oriented Programming Lab


45
void stack_class::push(int item)
{
st.top++;
st.s[st.top]=item;
}
/*
the stempty function
input:none
output: returns 1 or 0 for stack empty or not
called by :main
calls :none
*/
int stack_class::stempty()
{
if(st.top==-1)
return 1;
else
return 0;
}
/*
pop function
input:none
output:returns the item which is poped from the stack
calledby:main
calls:none
*/
int stack_class::pop()
{
in item;
item=st.s[st.top];
st.top--;
return(item);
}
/*
display function
input:none
output:none –displays the contents of the stack
calledby:main
calls:none
*/
void stack_class::display()
{
int i;
if(stempty())
cout<<”\n stack is empty!”;
else

EC 2209 Data Structures and Object Oriented Programming Lab


46
{
for(i=st.top;i>=0;i--)
cout<<”\n”<<st.s[i];
}
}
/*
the main function
input:none
output:none
calledby:o.s
calls:push,pop,stempty,stfull,display
*/
void main(void)
{
int item,choice;
char ans;
stack_class obj;
clrscr();
cout<<”\n\t\t implementation of stack”;
do
{
cout<<”\n main menu”;
cout<<”\n1.push\n2.pop\n3.display\n 4.exit”;
cout<<”\nenter your choice”;
cin>>choice;
switch(choice)
{
case 1:
cout<<”\n enter the item to be pushed”;
cin>>item;
if(obj.stfull())
cout<<”\n stack is full”;
else
obj.push(item);
break;
case 2:if(obj.stempty())
cout<<”\n empty stack!underflow !!”;
else
{
item=obj.pop();
cout<<”\n the poped element is”<<item;
}
break;
case 3:
obj.display();
break;

EC 2209 Data Structures and Object Oriented Programming Lab


47
case 4:exit(0);
}
cout<<”\n do you want to continue?”;
ans=getche();
}
while(ans==’Y’||ans’y’)
getch();
}

Output:

implementation of stack
main menu
1.push
2.pop
3.display
4.exit

enter your choice 1


enter the item to be pushed 10
do you want to continue? y

main menu
1.push
2.pop
3.display
4.exit

enter your choice 1


enter the item to be pushed 20
do you want to continue? y
main menu
1.push
2.pop
3.display
4.exit

enter your choice 2


the popped element is 30
do you want to continue? y

main menu
1.push
2.pop
3.display
4.exit

EC 2209 Data Structures and Object Oriented Programming Lab


48
enter your choice 3
20
10
do you want to continue? y
main menu
1.push
2.pop
3.display
4.exit

enter your choice 2


the popped element is 20

do you want to continue? y


main menu
1.push
2.pop
3.display
4.exit

enter your choice 2


the popped element is 10
do you want to continue? y
main menu
1.push
2.pop
3.display
4.exit

enter your choice 2


empty stack! Underflow !!
do you want to continue

Result:
Thus the given program stack ADT using array implemented successfully.

EC 2209 Data Structures and Object Oriented Programming Lab


49
Ex. No:5b STACK ADT USING LINKED LIST IMPLEMENTATION

Aim:
              To write a program for stack ADT using linked list implementation.
 
Algorithm:

           Step1:Define a struct for each node in the stack. Each node in the stack
                     contains data and link to the next node. TOP pointer points to last
                    node inserted in the stack.

          Step 2: The operations on the stack are


         a)PUSH data into the stack
         b)POP data out of stack
 
         Step  3:  PUSH DATA INTO STACK
                   3a.Enter the data to be inserted into stack.
                   3b.If TOP is NULL
                         the input data is the first node in stack.
                         the link of the node is NULL.
                        TOP points to that node.
                   3c.If TOP is NOT NULL
                        the link of TOP points to the new node.
                        TOP points to that node.

           Step 4:   POP DATA FROM STACK


                   4a.If TOP is NULL
                        the stack is empty
                   4b.If TOP is NOT NULL
                        the link of TOP is the current TOP.
                        the pervious TOP is popped from stack.

            Step 5.  The stack represented by linked list is traversed to display its content.
 
 Program:

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
// Declaration for data structure of linked stack
class lstack
{
private:

EC 2209 Data Structures and Object Oriented Programming Lab


50
typedef struct stack
{
int data;
struct stack *next;
}node;
node *top;
public:
lstack();
~lstack();
void creat(),remove(),show();
void push(int,node**);
void display(node **);
int pop(node **);
int sempty(node **);
};
/*
…………………………………..
the constructor defined
……………………………………….
*/
lstack::lstack()
{
top=NULL;
}
/*
……………………………………
the destructor defined
…………………………………….
*/
lstack::~lstack()
{
node *temp;
temp=top;
if(temp==NULL)
delete temp;
else
{
while(temp!=NULL)
{
temp=temp->next;
top=NULL;
top=temp;
}
delete temp;//de allocating memory
}
}

EC 2209 Data Structures and Object Oriented Programming Lab


51
/*
……………………………………
the create function
………………………………………
*/
void lstack::create()
{
int data;
cout<<”\n enter the data”;
cin>>data;
push(data,&top);
}
/*
………………………………………….
remove function
………………………………………….
*/
void lstack::remove()
{
int item;
if(sempty(top))
cout<<”\n stack underflow!”;
else
{
item=pop(&top);
cout<<”\n the popped node is”<<item;
}
}
/*
…………………………………..
the show function
……………………………………*/
void lstack::show()
{
display(&top);
}
/*………………………………………
the push function
………………………………………….*/
void lstack::push(int item,node **top)
{
node * New;
New=new node;
New->next=NULL;
New->data=item;
New->next=*top;

EC 2209 Data Structures and Object Oriented Programming Lab


52
*top=New;
}

/*
……………………………………..
the sempty function
………………………………………
*/
int lstack::sempty(node *temp)
{
if(temp==NULL)
return 1;
else
return 0;
}
/*
………………………………………..
the pop function
…………………………………………*/
int lstack::pop(node **top)
{
int item;
node *temp;
item=(*top)->data;
temp=*top;
*top=(*top)->next;
delete temp;
return(item);
}
/*
………………………………….
the display function
………………………………….
*/
void lstack::display(node **head)
{
node *temp;
temp=*head;
if(sempty(temp))
cout<<”\n the stack is empty!”;
else
{
while(temp!=NULL)
{
cout<<””<<temp->data;

EC 2209 Data Structures and Object Oriented Programming Lab


53
temp=temp->next;
}
}
getch();
}
/*
………………………………..
the main function
…………………………………….
*/
void main()
{
int choice;
char ans,ch;
lstack st;
clrscr();
cout<,”\n\t\t stack using linked list”;
do
{
cout<<”\n\n the main menu”;
cout<<”\n 1.push\n2.pop\n3.display\n4.exit”;
cout<<”\n enter your choice”;
cin>>choice;
switch(choice)
{
case 1:st.create();
break;
case 2:
st.remove();
case 3:
st.show()’
break;
case 4:
exit(0);
}
cout<<”\n do you want to continue>”;
ans=getche();
getch();
clrscr();
}
while(ans==’y’||ans==’Y’);
getch();
}

EC 2209 Data Structures and Object Oriented Programming Lab


54
Output:

stack using linked list

the main menu


1.push
2.pop
3.display
4.exit
enter your choice 1
enter the data 10

do you want to continue?

the main menu


1.push
2.pop
3.display
4.exit
enter your choice 1
enter the data 20
do you want to continue? y

the main menu


1.push
2.pop
3.display
4.exit
enter your choice 1
enter the data 30
do you want to continue? y

the main menu


1.push
2.pop
3.display
4.exit
enter your choice 1
enter the data 40

do you want to continue? y

EC 2209 Data Structures and Object Oriented Programming Lab


55
the main menu
1.push
2.pop
3.display
4.exit
enter your choice 1
enter the data 50

do you want to continue? y

the main menu


1.push
2.pop
3.display
4.exit
enter your choice 3
50 40 30 20 10
do you want to continue? y
the main menu
1.push
2.pop
3.display
4.exit
enter your choice 2
the poped node is 50

do you want to continue? y


the main menu
1.push
2.pop
3.display
4.exit
enter your choice 4

 Result:

Thus the Given Program for stack ADT using linked list implementation was
executed successfully.

EC 2209 Data Structures and Object Oriented Programming Lab


56
 

Ex. No: 6 PROGRAM SOURCE FILES FOR STACK APPLICATION1 

Application 1: checking well formedness of parenthesis.

A) STACK IMPLEMENTED AS ARRAYS(USING THE HEADER FILE OF


STACK OPERATIONS)

Step 1: Crate a header file named stack.h . in this frile we will declare the class and all the
stack operations. the implementation of stack is using arrays.

stack.h
#define size 10
class stk_class
{
private:
/*stack structure*/
struct stack{
char s[size];
int top;
}st;
public:
stk_class();
void push(char item);
int stempty();
char pop();
};
stk_class::stk_class()
{
st.top=-1;
}
/* the push function
input:item which is to be pished
output:none –simply pushes the item onto the stack
called by: main
calls: one
*/
void stk_class::push(char item)
{
st.top++;
st.s[st.top]=item;
EC 2209 Data Structures and Object Oriented Programming Lab
57
}
/*
the stempty function
input:none
output:returns 1 or 0 for stack empty or not
called by:none
*/
int stk_class::stempty()
{
inr(st.top==-1)
return 1;
else
return 0;
}
/*
the stfull function
input:none
coutput:returns 1 or 0 for stack full or not
called by :main
calls:none
*/
int stk_class::stfull()
{
if(st.top==size)
return 1;
else
return 0;
}
/*
the pop function
input:none
output:returns the item which is poped from the stack
called by: main
calls:none
*/
char stk_class::pop()
{
char item;
item=st.s[st.top];
st.top--;
return(item);
}

EC 2209 Data Structures and Object Oriented Programming Lab


58
Step 2: Now we will create a stack application program. We have chosen an application as
“checking well formedness of parenthesis” for this application we will use stack operations.
These operations are used from the external file stack.h. Hence we will include this file in
the include file section. Here is an application program.

/************************************************************************
program for checking the well formedness of the parenthesis using stack as arrays.
************************************************************************/
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include “d:\stack.h”
#define size 10
/*
the main function
input:none
ouput:none
called by:O.S
calls:push,pop,stempty
*/
void main(void)
{
char item;
char ans,bracket[10];
stk_class obj;
int I;
clrscr();
cout<,”\n\t\t program for stack application using separate header file”;
cout<<”\n enter the expression and put $at end “;
cin>>bracket;
i=0;
if(bracket[i]==’)’)
cout<<”\n the expressin is invalid”;
else
{
do
{
while(brackt[i]==’(‘)
{
obj.push(bracket[i]);
i++;
}
while(bracket[i]==’)’)

EC 2209 Data Structures and Object Oriented Programming Lab


59
{
item=obj.pop();
i++;
}
}
while(brackt[i]!=’$’)
if(!obj.stempty())
cout<<”\n the expression is invalid”;
else
cout<<”\n the expression has well formed parenthesis”;
}
getch();
}

Step 3: Execute above program and following output can be obtained.

Output(run 1)
program for stack application using separate header file
enter the expression and put $ at the end (()(()))$
the expression has well formed parenthesis
Output(run 2)

program for stack application using separate header file


enter the expression and put $ at the end (()()$

the expression in invalid.

Result:

EC 2209 Data Structures and Object Oriented Programming Lab


60
Thus the given program checking well formedness of parenthesis stack implemented as
arrays was executed successfully.

B) STACK IMPLEMENTED AS LINKED LIST(USING THE HEADER FILE OF STACK


OPERATION)

step 1:
create a header file named stack. In this file we declare the class and all the stack
operations. The implementation of stack using linked list.

/**********************************
the stack.h file
***********************************/
class stk_class
{
private:
/*data structure for the linked stack*/
typedef struct stack
{
char data;
struct stack * next;
}node;
node *top;
public:
stk_class();
void push(char item);
int sempty();
void pop();
};
stk_class ::stk_class()
{
top=NULL;
}
/* functionality performed on linked stack*/
void stk_class::push(char item)
{
node * New;
New=new node;
if(New==NULL)
cout<<”\n memory cannot be allocated \n”;
else
{
New->data=item;
new->next=top;

EC 2209 Data Structures and Object Oriented Programming Lab


61
top=New;
}
}
/* the sempty function
input: any node for checking the empty condition
output:1 or 0 for empty or not condition
called by: main
calls: none
*/
int stk_class::sempty()
{
if(top==NULL)
return 1;
else
return 0;
}
/*
………………………………………
the pop function
input: the top of the stack
called by: main
calls:none
……………………………………………*/
void stk_class::pop()
{
node *temp;
temp=top;
top=top->next;
delete temp;}

Step 2:
Now we will create a stack application program. We have chosen an application as
“checking well formedness of parenthesis” for this application we will use stack operations.
These operations are used from the external file stack.h. Hence we will include this file in
the include file section. Here is an application program.

/*…………………………………………………………………………………………
Program for checking the well – formedness of the parenthesis using linked stack.
……………………….…………………………………………………………………..*/

/*include file section*/


#include<iostream.h>
#include<conio.h>
#include<process.h>
#include<stdlib.h>
/* Included linked stack as a header file*/

EC 2209 Data Structures and Object Oriented Programming Lab


62
#include<”d:\stack.h”
/*
the main function
input:none
output:none
called by:O.S
calls:push ,pop,sempty
*/
void main(void)
{
char ans,bracket[10];
Char data ,item;
stk_class obj;
int choice;
int I;
clrscr();
cout<<”\n\t\t enter the expression and put $ at the end “;
cin>>bracket;
i=0;
if(bracket[i]==’)’)
cout<<”\n the expression is invalid”;
else
{
do
{
if(bracket[i]==’(‘)
{
obj.push(bracket[i]);
}
else if(bracket[i]==’)’)
{
if(obj.sempty())
{
cout<<”\n the expression is invalid”;
getch();
exit(0);
}
obj.pop();
}
i++;
}
while(bracket[i]!=’$’);
if(obj.sempty())
cout<<”\n the expression is invalid”;
else
cout<<”\n the expression has well formed parenthesis”;

EC 2209 Data Structures and Object Oriented Programming Lab


63
}
getch();
}
Step 3:

The above program will be executed to get output as follows

output(run1)
enter the expression and put $ at the end ()()$
the expression has well formed parenthesis

output(run 2)
enter the expression and put $ at the end (()()$
the expression is invalid.

Result:

Thus the given program checking well formedness of parenthesis stack implemented as
Linked List was executed successfully.

EC 2209 Data Structures and Object Oriented Programming Lab


64
Ex. No: 6 PROGRAM SOURCE FILES FOR STACK APPLICATION2

application 2: Evaluation of postfix expression.

A.USING STACK(IMPLEMENTATION AS ARRAYS)


STEP 1:

/********************************************
stack.h
*********************************************/
#define Max 10
class stk_class
{
/*declaration of stack data structure*/
struct stack
{
double s[MAX];
int top;
}st;
public:
stk_class();
void push(double val);
double pop();
};
stk_class::stk_class()
{
st.top=0;
}
void stk_class::push(double val)
{
if(st.top+1>=MAX)
cout<<”\n stack is full”;
st.top++;
st.s[st.top]=val;
}

double stk_class::pop()
{
double val;

EC 2209 Data Structures and Object Oriented Programming Lab


65
if(st.top==-1)
cout<<”\n stack is empty\n”;
st.top--;
return(val);l
}

STEP 2:

/************************************************************************
program to evaluate a given postfix expression .her the stack using arrays is implemented
in separate file named stack.h
************************************************************************/

#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
/*included the header file as stack using array*/
#define size 80
void main()
{
char exp[size];
int len;
double result;
double post(char exp[]);
clrscr();
cout<<”enter the postfix expression\n”;
cin>>exp;
len=strlen(exp);
exp[len]=’$’;/*append $ at the end a end marker*/
result=post(exp);
cout<<”the value of the expression is”<<result;
getch();
exit(0);
}

double post(char exp[])


{
stk_class obj;
char ch,*type;
double result ,val,op1,op2;
int i;
i=0;
ch=exp[i];

EC 2209 Data Structures and Object Oriented Programming Lab


66
while(ch!=’$’)
{
if(ch>=’0’&&ch<=’9’)
type=””operand”:
else if(ch==’+’||ch==’-‘||ch==’^’)
type=”operator”;
if(strcmp(type,”operand”)==0)/* if the character is operator*/
{
val=ch-48;
obj.push(val);
}
else
if(strcmp(type,”operator”)==0)/* if it is operator*/
{
op2=obj.pop();
op1=obj.pop();
switch(ch)
{
case ‘+’:result=op1+op2;
break;
case ‘-‘:result=op1-op2;
break;
case ‘*;:result=op1*op2;
break;
case ‘/’: result=op1/op2;
break;
case ‘^’:result=pow(op1,op2)
break;
}
/*switch*/
obj.push(result);
}
i++;
ch=exp[i];
}/*while*/
result-obj.pop();/*pop the result*/
return(result);
}

Output:

Enter the postfix expression


12+3*
The value of the expression is 9

EC 2209 Data Structures and Object Oriented Programming Lab


67
Result:

Thus the given program Evaluation of postfix expression stack implemented as arrays was
executed successfully.

B. STACK IMPLANTED AS LINKED LIST(USE OF SEPARATE HEADER FILE FOR STACK


OPERATIONS)

STEP 1:
/********************************************************************
the stack.h file
**********************************************************************/
class stk_class
{
/* data structure for the linked stack*/
typedef struct stack
{
char data;
struct stack *next;
}node;
public:
node *top;
stk_class();
void push(char item);
char pop();
};
stk_class::stk_class()
{
top=NULL:
}
/* functionality performed on linked linked stack*/
void stk_class::push(char item)
{
node *New;
New=new node;
New->data =Item;
New->next=top;
top=New;
}
char stk_class::pop()
{
char item;
node *temp;
item=top->data;

EC 2209 Data Structures and Object Oriented Programming Lab


68
temp=top;
top=top->next;
delete temp;
return item;
}

STEP 2:

/*********************************************************************
program to evaluate a given postfix expression using linked stack.
here stack.h is a user defined header file created for linked stack
**********************************************************************/
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
/* included the stack.h file (given below) for linked stack*/
#include”d:\stack.h”
#define size 80
void main()
{
char exp[size];
int len;
double result;
double post(char exp[])
clrscr();
cout<<”enter the postfix expression\n”;
cin>>exp;
len=strlen(exp);
cin>>exp;
len=strlen(exp);
exp[len]=’$’;/*append $at the end as a endmarker*/
result=post(exp);
cout<<”the value of the expression is”<<result;
getch();
exit(0);
}

double post(char exp[])


{
char ch,*type;
double result ,val,oip1,op2;
int I;
stk_class obj;

EC 2209 Data Structures and Object Oriented Programming Lab


69
i=0;
ch=exp[i];
while(ch!=’$’)
{
if(ch>=’0’&&ch<=’9’)
type=”operand”;
else if(ch==’+’||ch==’-‘||ch==’*’||ch==’/’||ch==’^’)
type=”operator”;
if(strcmp(type,”operator”)==0) /* if the character is operand*/
{
val=ch-48;
obj.push(val);
}
else
if(strcmp(type,”operator”)==0)/*if it is operator*/
{
op2=obj.pop();
op1=obj.pop();
switch(ch)
{
case ‘+’:result=op1+op2;
break;
case ‘-‘:result=op1-op2;
break;
case ‘*;:result=op1*op2;
break;
case ‘/’: result=op1/op2;
break;
case ‘^’:result=pow(op1,op2)
break;
}
/*switch*/
obj.push(result);
}
i++;
ch=exp[i];
}/*while*/
result-obj.pop();/*pop the result*/
return(result);
}

Output:

enter the expression


12+3*
the value of the expression is 9

EC 2209 Data Structures and Object Oriented Programming Lab


70
Result:

Thus the given program Evaluation of postfix expression stack implemented as Linked List
was executed successfully.
Ex. No:7a QUEUE ADT USING ARRAY IMPLEMENTATION

Aim:
              To write a program for Queue using array implementation.
 
Algorithm:

           Step1:Define a array which stores queue elements..

          Step 2: The operations on the queue are


         a)INSERT data into the queue
         b)DELETE data out of queue
 
         Step  3:  INSERT DATA INTO queue
                   3a.Enter the data to be inserted into queue.
                   3b.If TOP is NULL
                         the input data is the first node in queue.
                         the link of the node is NULL.
                        TOP points to that node.
                   3c.If TOP is NOT NULL
                        the link of TOP points to the new node.
                        TOP points to that node.

           Step 4:   DELETE DATA FROM queue


                   4a.If TOP is NULL
                        the queue is empty
                   4b.If TOP is NOT NULL
                        the link of TOP is the current TOP.
                        the pervious TOP is popped from queue.

            Step 5.  The queue represented by linked list is traversed to display its content.
 
  Program:
/******************************************************
Program for implementing the queue using arrays
*******************************************************/

#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#define size 5
class myq

EC 2209 Data Structures and Object Oriented Programming Lab


71
{
private:
struct queue
{
int que[size];
int front ,rear;
}q;
public:
myq();
int qfull();
int insert(int);
int qempty();
int delet();
void display();
};
myq::myq()
{
q.front=-1;
q.rear=-1;
}
/*
the qfull function
input:none
output:1 or 0 for q full or not
called by:main
*/
int myq::qfull()
{
if(q.rear>=size-1)
return 1;
else return 0;
}
/*
the insert function
input: item which is to be insered in the q
output:rear value
called by :main
calls :none
*/
int myq::insert(int item)
{
if(q.front==-1)
q.front++;
q.que[++q.rear]=item;
return q.rear;
}

EC 2209 Data Structures and Object Oriented Programming Lab


72
int myq::qempty()
{
if(q.front==-1||(q.front>q.rear))
return 1;
else
return 0;
}
/*
the delete function
input:none
output:front value
called by:main
calls:none
*/
int myq::delet()
{
int item;
item=q.que[q.front];
q.front++;
cout<<”\n the deleted item is”<<item;
return q.front;
}
/*
the display function
input: none
output:none
called by:main
calls:none
*/
void myq::display()
{
int I;
for(i=q.front;i<=q.rear;i++)// printing the queue from front to rear
cout<<””<<q.que[i];
}
void main(void)
{
int choice,item;
char ans;
myq obj;
clrscr();
do
{
cout<<”\n main menu”;
cout<<”\n 1.insert\n 2.delete\n 3.display”;
cout<<”\n enter your choice:”;

EC 2209 Data Structures and Object Oriented Programming Lab


73
cin>>choice;
switch(choice)
{
case 1:
if(obj.qfull()) //checking for queue overflow
cout<<?\n cannot insert the element”;
else
{
cout<,”\n enter the number to be insered”;l
cin>.item;
obj.insert(item);
}
break;
case 2:
if(obj.qempty())
cout<<”\n queue underflow!”;
else
obj.delet();
break;
case 3:
if(obj.qempty())
cout<<”\n queue is empty!”;
else
obj.display();
break;
default:cout<<|\n do you want to continue?”;
ans=getche();
}while(ans==’Y’||ans==\y\);
}

Output:

main menu
1.insert
2.delete
3.display

enter your choice 1


enter the number to be inserted 10
do you want to continue?y
main menu
1.insert
2.delete
3.display

enter your choice 1

EC 2209 Data Structures and Object Oriented Programming Lab


74
enter the number to be inserted 20
do you want to continue?y
main menu
1.insert
2.delete
3.display
enter your choice 1
enter the number to be inserted 30
do you want to continue?y
main menu
1.insert
2.delete
3.display
enter your choice 1
enter the number to be inserted 40
do you want to continue?y
main menu
1.insert
2.delete
3.display

enter your choice 3


10 20 30 40
do you want to continue?y
main menu
1.insert
2.delete
3.display

enter your choice 2


the deleted item is 10
do you want to continue?y
main menu
1.insert
2.delete
3.display
enter your choice 2
the deleted item is 20
do you want to continue?y
main menu
1.insert
2.delete
3.display
enter your choice 3
30 40
do you want to continue?

EC 2209 Data Structures and Object Oriented Programming Lab


75
Result:
Thus the Given Program for Queue using array implementation was executed successfully.

Ex. No:7b QUEUE ADT OPERATIONS USING LINKED LIST

Aim:
              To write a C++ program for Queue using Linked implementation.
 
Algorithm:

           Step1: Define a struct for each node in the queue. Each node in the queue
                     contains data and link to the next node. Front and rear pointer points to first
and last
                    node inserted in the queue.

          Step 2: The operations on the queue are


         a)INSERT data into the queue
         b)DELETE data out of queue
 
         Step  3:  INSERT DATA INTO queue
                   3a.Enter the data to be inserted into queue.
                   3b.If TOP is NULL
                         the input data is the first node in queue.
                         the link of the node is NULL.
                        TOP points to that node.
                   3c.If TOP is NOT NULL
                        the link of TOP points to the new node.
                        TOP points to that node.

           Step 4:   DELETE DATA FROM queue


                   4a.If TOP is NULL
                        the queue is empty
                   4b.If TOP is NOT NULL
                        the link of TOP is the current TOP.
                        the pervious TOP is popped from queue.

            Step 5.  The queue represented by linked list is traversed to display its content.
 
 
 Program:
/*
**********************************************
Program for implementing the queue using the linked list.
the queue full condition will never occur in this program.
**********************************************

EC 2209 Data Structures and Object Oriented Programming Lab


76
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
//declaration of linked queue data structure
class lqueue
{
private:
typedef struct node
{
int data;
struct node *next;
}Q;
Q *front,*rear;
public:
lqueue();
~ lqueue();
void create(),remove(),show();
void insert();
Q *delet();
void display(Q *);
};
/*
………………………………………
the constructor defined
………………………………………
*/
lqueue::lqueue()
{
front=NULL;
rear=NULL;
}
/*
………………………………………
the create function
………………………………………..
*/
void lqueue::create()
{
insert();
}
/*
………………………………………
the remove function
………………………………………..
*/
void lqueue::remove()

EC 2209 Data Structures and Object Oriented Programming Lab


77
{
front=delet();
}
/*
………………………………………
the show function
………………………………………..
*/
void lqueue::show()
{
display(front);
}
/*
………………………………………
the insert function
………………………………………..
*/
void lqueue::insert()
{
char ch;
Q *temp;
clrscr();
temp=new Q;//allocate memory for temp node
temp->next=NULL;
cout<<”\n\n\n insert the element in the queue\n”;
cin>>temp->data;

if(front==NULL)//create first node


{
front=temp;
rear=temp;
}
else
{
rear->next=temp;
rear=rear->next;
}
}

/*
………………………………………
the Qempty function
………………………………………..
*/
int qempty(Q *front)
{

EC 2209 Data Structures and Object Oriented Programming Lab


78
if(front==NULL)
return 1;
else
return 0;
}
/*
…………………………………………..
the delete function
…………………………………………..
*/
Q *lqueue::delet()
{
Q *temp;
temp=front;
if(Qempty(front))
{
cout<<”\n\n\t\t sorry ! the queue is empty\n”;
cout<<”\n can not delte the element”;
}
else
{
cout<<”\n\t the deletd element is”<<temp->data;
fron=-front->next;
temp->next=NULL;
delete temp;
}
return front;
}
/*
……………………………………….
the display function
………………………………………..
*/
void lqueue::display(Q *front)
{
if(Qempty(front))
cout<<”\n the queue is empty\n”;
else
{
cout<<”\n\t the display of queue is \n”;
for(;front!=rear->next;front =front ->next)
cout<<”’<<front->data;
}
getch();
}
/*

EC 2209 Data Structures and Object Oriented Programming Lab


79
………………………………………
the destructor defined
………………………………………
*/
lqueue::lqueue()
{
if((front!NULL)&&(rear!=NULL))
{
front=NULL;
rear=NULL;
dlete front;
delete rear;
}
}
/*
…………………………………………
the main function
calls: create,remove,show
called by:O.S
…………………………………………
*/
void main(void)
{
char ans;
int choice;
lqueue que;
do
{
clrscr();
cout<<”\n \t program for queue using linked list\n”;
cout<<”\n main menu”;
cout<<”\n 1.insert\n2. delete\n3.display”;
cout<<”\n enter your choice”;
cin>>choice;
switch(choice)
{
case 1:
que.create();
break;
case 2:
que.remove();
break;
case 3:
que.show();
break;
default:cout<<”\n you have entered wrong choice”<<endl;

EC 2209 Data Structures and Object Oriented Programming Lab


80
break;
}
cout<<”\n do you want main menu?(y/n)”<<endl;
ans=getch();
}
while(ans==’y’||ans=’Y’);
getch();
}

Output

program for queue using linked list


main menu
1.insert
2. delete
3.display

enter your choice 1


insert the element in the queue
10
do you want main menu?(y/n)
y
program for queue using linked list
main menu
1.insert
2. delete
3.display

enter your choice 1


insert the element in the queue
20
do you want main menu?(y/n)
y
program for queue using linked list
main menu
1.insert
2. delete
3.display

enter your choice 1


insert the element in the queue
30
do you want main menu?(y/n)
y

EC 2209 Data Structures and Object Oriented Programming Lab


81
program for queue using linked list
main menu
1.insert
2. delete
3.display

enter your choice 1

insert the element in the queue


40
do you want main menu?(y/n)
y
program for queue using linked list
main menu
1.insert
2. delete
3.display

enter your choice 3

the display of queue is


10 20 30 40
do you want main menu?(y/n)
y
program for queue using linked list
main menu
1.insert
2. delete
3.display

enter your choice 2


the deleted element is 10

do you want main menu?(y/n)


y
program for queue using linked list
main menu
1.insert
2. delete
3.display

enter your choice 2


the deleted element is 20

EC 2209 Data Structures and Object Oriented Programming Lab


82
do you want main menu?(y/n)
y
program for queue using linked list
main menu
1.insert
2. delete
3.display

enter your choice 3


the display of queue is
30 40
do you want to see main menu?(y/n)n

Result:

EC 2209 Data Structures and Object Oriented Programming Lab


83
Thus the given program Queue ADT operations using Linked List was executed
successfully.

Ex. No:8 BINARY SEARCH TREE


 
Aim:
              To write a c program for binary search tree.
 
Algorithm:
 
1. Declare function create(),search(),delete(),Display().
2. Create a structure for  a tree contains left pointer and right pointer.
3. Insert an element is by checking the top node and the leaf node and the operation
will be performed.
4. Deleting an element contains searching the tree and deleting the item.
5. display the Tree elements.
Program:

/*
******************************************************************
Program for implementation of binary search tree and perform insertion
,deletion,searching,display of tree.
******************************************************************
*/
#include<iostream.h>
#include<conio.h>
class bintree
{
typedef struct bst
{
int data;
struct bst,*left,*right;
}
node;
node *root,*new,*temp,*parent;
public:
bintree()
{
root=NULL;
}
void create();
void display();
void delet();
void find();
void insert(node *,node*);

EC 2209 Data Structures and Object Oriented Programming Lab


84
void inorder)node *);
void search(node**,int,node **);
void del(node *,int);
};
void bintree::create()
{
New=new node;
New->left=NULL;
New->right=NULL;
cout<<”\n enter the element”;
cin>>New->data;
if(root==NULL)
root=New;
else
insert(root,New);
}
void bintree::insert(node *root,node *New)
{
if(New->data<root->data)
{
if(root->left==NULL)
root->left=New;
else
insert(root->left,New);
}
if(New->data>root->data)
{
if(root->right==NULL)root->right=New;
else
insert(root->right,New);
}
}
voi bintree::display()
{
if(root==NULL)
cout<<”tree is not created”;
else
{
cout<<”\n the tree is:”;
inorder(root);
}
}
void bintree::inorder(node *temp)
{
if(temp!NULL)
{

EC 2209 Data Structures and Object Oriented Programming Lab


85
inorder(temp->left);
cout<<””<<temp->data;
inorder(temp->righ);
}
}
void bintree::find()
{
int key;
cout <<”\n enter the element which you want to search”;
cin>>key;
temp=root;
search(&temp,key,&parent);
if(temp==NULL)
cout<<”\n element is not present”;
else
cout<<”\n parent of node “<<temp->data<<”is”<<parent->data;
}
void bintreee::search(node **temp,int key,node ** parent)
{
if(*temp==NULL)
cout<<endL<<”tree is not created”<<endl;
else
{
while(*temp!=NULL)
{
if(*temp)->data==key)
{
cout<<”\n the”<<(*temp)->data<<”element is present”;
break;
}
*parent=*temp;//stores the parent value
if(*temp)->data>key)
*temp=(*temp)->left;
else
*temp=(*temp)->right;
}
}
return;
}
void bintree::delet()
{
int key;
cout<<”\n emter the element you want to delente”;
cin>>key;
if(key==root->data)
{

EC 2209 Data Structures and Object Oriented Programming Lab


86
bintree();// assigning a value NULL to root
}
else
del(root,key);}
/*
************************************************************************
This function is for deleting a node from binary search tree . there exits three possible cases
for deleting of a node
*************************************************************************
*/
void bintree::del(node *root,int key)
{
node *temp_succ;
if(root==NULL)
cout<<”tree is not created”;
else
{
temp=root;
search(&temp,key,&parent);
//temp node is to be deleted
/*deleting a node with two children*/
if(temp->left!=NULL&&temp->right!=NULL)
{
parent=temp;
temp_succ=temp_succ->left;
while(temp_succ->left!=NULL)
{
parent=temp_succ;
temp_succ=temp_succ->left;
}
temp->data=temp_succ->data; //copyng the immediate successor
temp->right-NULL:
cout<<””now deleted it!”;
return;
}
/* deleting a node having only one child*?
/*the node to be deleted has left child*/
if(temp->left!=NULL&&temp->right==NULL)
{
if(parent->left==temp)
parent->left=temp->left;
else
parent->right=temp->left;
temp=NULL;
delte temp;
cout<<”now deleted it!”;

EC 2209 Data Structures and Object Oriented Programming Lab


87
return;
}
/*the node to be deleted has right child*/
if(temp->left==NULL&&temp->right!=NULL)
{
if(parent->left==temp)
parent->left=temp->right;
else
parent->right=temp->right;
temp=NULL;
delete temp;
cout<<”now deleted it!”;
return;
}
/*deleting a node which is having no child*/
if(temp->left==NULL&&temp->right==NULL)
{
if(parent->left==temp)
parent->left=NULL;
else
parent->right=NULL;
cout<<”now deleted it!”;
return;
}
}
}
void main()
{
int choice;
char ans=’N’;
bintree tr;
cout<<”\n\t program for binary search tree”;
do
{
cout<<”\n1.create\n2.search\n3.delete\n4.display”;
cout<<”\n\n wnter your choice:”;
cin>>choice;
switch(choice)
{
case 1:do
{
tr.create();
cout<<”do you want to enter more elements”(y/n)”<<endl;
ans=getche();
}
while(ans==’y’);

EC 2209 Data Structures and Object Oriented Programming Lab


88
break;
case 2:tr.find();
break;
case 3:
tr.delet();
break;
case 4:
tr.display();
break;
}}
while(choice!=5);
}

Output:
program for binary search tree
1.create
2.search
3.delete
4.display

enter your choice 1

enter the element 10


do you want to enter more elements”(y/n)
y
enter the element 8
do you want to enter more elements”(y/n)
y
enter the element 7

do you want to enter more elements”(y/n)


y
enter the element 9

do you want to enter more elements”(y/n)


y
enter the element 12

do you want to enter more elements”(y/n)


y
enter the element 11

do you want to enter more elements”(y/n)


y
enter the element 13

EC 2209 Data Structures and Object Oriented Programming Lab


89
do you want to enter more elements”(y/n)
n

1.create
2.search
3.delete
4.display

enter your choice 4

the tree is: 7 8 9 10 11 12 13


1.create
2.search
3.delete
4.display

enter your choice 2

enter the element which you want to search 13


the 13 element is present
parent of node 13 is 12
1.create
2.search
3.delete
4.display

enter your choice 3

enter the element you wish to delete 12


the 12 element is present now deleted it!
1.create
2.search
3.delete
4.display

enter your choice 4

the tree is : 7 8 9 10 11 13
1.create
2.search
3.delete
4.display

enter your choice 3

enter the element you wish to delete 11

EC 2209 Data Structures and Object Oriented Programming Lab


90
the 11 element is present now deleted it!
1.create
2.search
3.delete
4.display

enter your choice 4

the tree is : 7 8 9 10 13
1.create
2.search
3.delete
4.display

enter your choice 3

enter the element you wish to delete 7


the 7 element is present now deleted it!
1.create
2.search
3.delete
4.display

enter your choice 4

the tree is : 8 9 10 13
1.create
2.search
3.delete
4.display

enter your choice 5

EC 2209 Data Structures and Object Oriented Programming Lab


91
 Result:

Thus the Given Program Binary Search Tree was executed successfully.

Ex. No:9 HEAP SORT

Aim:
              To  write a c program to perform heap sort.
 
Algorithm:
1. Get the size of the array from the user.
2. Get the elements to be sorted.
3. Sorting is performed when we call the heap sort function.
4. Now the array is contained with sorted elements.
5. Display the sorted elements.

Program:
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#define MAX 10
class heap
{
private:
int arr[MAX];
int n;
public:
Heap();
void insert(int num);
void makespace();
void heapsort();
void display();
};
heap::heap()
{
n=0;
for(int i=0;i<MAX;i++)
arr[i]=0;
}
void heap::insert(int num)
{
if(n<Max)
{
arr[n]=num;
n++;
}

EC 2209 Data Structures and Object Oriented Programming Lab


92
else
cout<<”\n array is full”;
}
void heap::makeheap()
{
for(int i=1;i<n;i++)
{
int val =arr[i];
int j=I;
int f=(j-1)/2;
while(j>0&&arr[f]<val)//creating a MAX heap
{
arr[j]=arr[f];
j=f;
f=(j-1)/2;
}arr[j]=val;
}}
void heap::heapsprt()
{
for(int i=n-1;i>0;i--)
{
int temp=arr[i];
arr[i]=arr[0];
int k=0;
int j;
if(i==1)
j=-1;
else
j=1;
if(i>2&&arr[2]>arr[1])
j=2;
while(j>=0&&temp<arr[j])
{
arr[k]=arr[j];
k=j;
j=2*k+1;
if(j+1<=i-1&&arr[j]<arr[j+1])
j++;
if(j>i-1)
j=-1;
}
arr[k]=temp;
}
}
void heap::display()
{

EC 2209 Data Structures and Object Oriented Programming Lab


93
for(int i=0;i<n;i++)
cout<<”\n”<<arr[i];
cout<<”\n”;
}
void main()
{
heap obj;
obj.insert(14);
obj.insert(12);
obj.insert(9);
obj.insert(8);
obj.insert(7);
obj.insert(10);
obj.insert(18);
cout<<”\n the elements are …..”<<endl;
obj.display();
odj.makeheap();
cout<<”\n heapified”<<endl;
obj.display();
obj.heapsort();
cout<<”\n elements sorted by heap sort…”<<endl;
obj.display();
getch();
}
Output:
the elements are….
14
12
9
8
7
10
18
heapified
18
12
14
8
7
9
10
Elements sorted by heap sort
7
8
9
10

EC 2209 Data Structures and Object Oriented Programming Lab


94
12
14
18
Result: Thus the Given Program Heap Sort was executed successfully.
 
Ex.No :10 QUICK SORT

Aim:
              To  write a c program to perform quick sort.
 
Algorithm:
1. Get the value of how many no. to be sorted.

2. Get the elements from the user.

3. Two function quicksort() and swap(). Quick sort to perform sorting.

4. Swap() is just to rearrange the values.

5. Quick sort algorithm works by partitioning the array to be sorted, then recursively

sorting each partition.

6. Display the sorted value.

 
 Program:
 
 #include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#define SIZE 10
class quick
{
int arr[SIZE];
public:
int get_data(int);
void quicksort(int ,int);
int partition(int,int);
void swap)int ,int);
void display(int);
};
/*
this function is to input the elements
*/
int quick::get_data(int n)

EC 2209 Data Structures and Object Oriented Programming Lab


95
{
int i
cout<<”\n enter total numbers to sort:”;
cin>>n;
for(i-0;i<n;i++)
{
cout<<”\n enter element”;
cin>>arr[i];
}
return n;
}
/*
this function is to sort the elements in a sublist
*/
void quick::quicksort(int p,int q)
{
int j;
if(p<q)
{
j=partition(p,q+1);// setting pivot element
quicksort(p,j-1);//splitting of list
quicksort(j_1,q);//splitting of list
}}
/*
this function is to partition a list and decide the pivot element
*/
int quick::partition(int m,int p)
{
int pivot=arr[m];
int i=m.j=p;
do
{
do
{
i++;
}
while(arr[i]<pivot);
do
{
j--;
}while(arr[j]>pivot);
if(i<j)
swap(I,j);
}while(i<j);
arr[m]=arr[j];
arr[j]=pivot;

EC 2209 Data Structures and Object Oriented Programming Lab


96
return j;
}
void quick::swap(int I,int j)
{
int p;
p=arr[i];
arr[i]=arr[j];
arr[j]=p;
}
void quick::display(int n)
{
for(int i=0;i<n;i++)
cout<<”’<<arr[i]’
}
void main()
{
quick obj;// for integer elements
int n,I;
clrscr();
cout<,”\n \t\t\quick sort method\n”;
n=obj.get_data(n);
obj.quicksort(0,n-1);
cout<<”\n\\t sorted array is:\n”;
obj.display(n);
getch();
}

Output
quick sort method
enter total numbers to sort: 5
enter element 30
enter element 50
enter element 10
enter element 20
enter element 40
sorted array is
10 20 30 40 50

 Result:

EC 2209 Data Structures and Object Oriented Programming Lab


97
Thus the Given Program quick sort was implemented successfully.
 
 

EC 2209 Data Structures and Object Oriented Programming Lab


98

Вам также может понравиться