pads lab manual final

57
EX.NO.1a) USE OF CONSTRUCTORS, DESTRUCTORS AND CONSTRUCTOR OVERLOADING PROGRAM #include<iostream.h> #include<conio.h> class stu { private: char name[20],add[20]; int roll,zip; public: stu ( );//Constructor ~stu( );//Destructor void read( ); void disp( ); }; stu :: stu( ) { cout<<"This is Student Details"<<endl; } void stu :: read( ) { cout<<"Enter the student Name"; cin>>name; cout<<"Enter the student roll no "; cin>>roll; cout<<"Enter the student address"; cin>>add; cout<<"Enter the Zipcode"; cin>>zip; } void stu :: disp( ) { cout<<"\nStudent Name :"<<name<<endl; cout<<"Roll no is :"<<roll<<endl; cout<<"Address is :"<<add<<endl; cout<<"Zipcode is :"<<zip; } stu :: ~stu( ) { cout<<"Student Detail is Closed" } void main( ) { stu s; s.read ( ); s.disp ( ); getch( ); }

Upload: ahalyar

Post on 21-Jun-2015

127 views

Category:

Engineering


6 download

DESCRIPTION

IT6311- programming and data strucuture lab manual

TRANSCRIPT

Page 1: Pads lab manual final

EX.NO.1a) USE OF CONSTRUCTORS, DESTRUCTORS AND CONSTRUCTOR OVERLOADING

PROGRAM

#include<iostream.h>#include<conio.h>class stu{ private: char name[20],add[20];

int roll,zip;public: stu ( );//Constructor

~stu( );//Destructorvoid read( );void disp( );

};stu :: stu( ){ cout<<"This is Student Details"<<endl; }void stu :: read( ){ cout<<"Enter the student Name";

cin>>name;cout<<"Enter the student roll no ";cin>>roll;cout<<"Enter the student address";cin>>add;cout<<"Enter the Zipcode";cin>>zip; }

void stu :: disp( ){ cout<<"\nStudent Name :"<<name<<endl;

cout<<"Roll no is :"<<roll<<endl;cout<<"Address is :"<<add<<endl;cout<<"Zipcode is :"<<zip; }

stu :: ~stu( ){cout<<"Student Detail is Closed" }void main( ){ stu s;s.read ( );s.disp ( );getch( ); }

Page 2: Pads lab manual final

OUTPUT

This is Student Details

Enter the student Name anu

Enter the student roll no 101

Enter the student address chennai

Enter the Zipcode 620001

Student Name : anu

Roll no is : 101

Address is :chennai

Zipcode is : 620001

Student Detail is closed

Page 3: Pads lab manual final

EX.NO.1b) COPY CONSTRUCTOR

PROGRAM

#include<iostream.h>

#include<conio.h>

class copy

{

              int var,fact;

              public:

 

                copy(int temp)

                {

                 var = temp;

                }

 

                double calculate()

                {

                            fact=1;

                            for(int i=1;i<=var;i++)

                            {

                            fact = fact * i;

                            }

                            return fact;                           

                }

};

void main()

{

    clrscr();

    int n;

    cout<<"\n\tEnter the Number : ";

    cin>>n;

    copy obj(n);

    copy cpy=obj;

    cout<<"\n\t"<<n<<" Factorial is:"<<obj.calculate();

    cout<<"\n\t"<<n<<" Factorial is:"<<cpy.calculate();

    getch();

}          

OUTPUT

Enter the Number: 5

Factorial is: 120

Factorial is: 120                                             

Page 4: Pads lab manual final

EX.NO.2a) FRIEND FUNCTION

PROGRAM

#include<iostream.h>

#include<conio.h>

class  base

{

    int val1,val2;

   public:

    void get()

    {

       cout<<"Enter two values:";

       cin>>val1>>val2;

    }

    friend float mean(base ob);

};

float mean(base ob)

{

   return float(ob.val1+ob.val2)/2;

}

void main()

{

    clrscr();

    base obj;

    obj.get();

    cout<<"\n Mean value is : "<<mean(obj);

    getch();

}          

OUTPUT

Enter two values: 10, 20

Mean Value is: 15

Page 5: Pads lab manual final

EX.NO.2b) FRIEND CLASS

PROGRAM

#include <iostream.h>

class CSquare;

class CRectangle {

int width, height;

public:

int area (void)

{return (width * height);}

void convert (CSquare a);

};

class CSquare {

private:

int side;

public:

void set_side (int a)

{side=a;}

friend class CRectangle;

};

void CRectangle::convert (CSquare a) {

width = a.side;

height = a.side;

}

int main () {

CSquare sqr;

CRectangle rect;

sqr.set_side(4);

rect.convert(sqr);

cout << rect.area();

return 0;

}

OUTPUT

The output is:

16

Page 6: Pads lab manual final

EX.NO.3a) INHERITANCE-SINGLE INHERITANCE

PROGRAM

#include<iostream.h>

#include<conio.h>

 class emp

{

   public:

     int eno;

     char name[20],des[20];

     void get()

     {

              cout<<"Enter the employee number:";

              cin>>eno;

              cout<<"Enter the employee name:";

              cin>>name;

              cout<<"Enter the designation:";

              cin>>des;

     }

};

class salary:public emp

{

     float bp,hra,da,pf,np;

   public:

     void get1()

     {             

              cout<<"Enter the basic pay:";

              cin>>bp;

              cout<<"Enter the Humen Resource Allowance:";

              cin>>hra;

              cout<<"Enter the Dearness Allowance :";

              cin>>da;

              cout<<"Enter the Profitablity Fund:";

              cin>>pf;

     }

     void calculate()

     {

              np=bp+hra+da-pf;

     }

     void display()

     {

              cout<<eno<<"\t"<<name<<"\t"<<des<<"\t"<<bp<<"\t"<<hra<<"\t"<<da<<"\t"<<pf<<"\t"<<np<<"\n";

     }

};

 

Page 7: Pads lab manual final

void main()

{

    int i,n;

    char ch;

    salary s[10];

    clrscr();

    cout<<"Enter the number of employee:";

    cin>>n;

    for(i=0;i<n;i++)

    {

              s[i].get();

              s[i].get1();

              s[i].calculate();

    }

    cout<<"\ne_no \t e_name\t des \t bp \t hra \t da \t pf \t np \n";

    for(i=0;i<n;i++)

    {

              s[i].display();

    }

    getch();

}

OUTPUT

Enter the Number of employee:1

Enter the employee No: 150

Enter the employee Name: ram

Enter the designation: Manager

Enter the basic pay: 5000

Enter the HR allowance: 1000

Enter the Dearness allowance: 500

Enter the profitability Fund: 300

 

E.No   E.name   des      BP     HRA   DA   PF     NP

150    ram      Manager 5000 1000 500 300    6200

Page 8: Pads lab manual final

EX.NO.3b) MULTIPLE INHERITANCE

PROGRAM

#include<iostream.h>

#include<conio.h>

 class student

{

    protected:

       int rno,m1,m2;

    public:

                void get()

              {

                            cout<<"Enter the Roll no :";

                            cin>>rno;

                            cout<<"Enter the two marks   :";

                            cin>>m1>>m2;

              }

};

class sports

{

    protected:

       int sm;                   // sm = Sports mark

    public:

                void getsm()

              {

                 cout<<"\nEnter the sports mark :";

                 cin>>sm;

 

              }

};

class statement:public student,public sports

{

    int tot,avg;

    public:

    void display()

              {

                 tot=(m1+m2+sm);

                 avg=tot/3;

                 cout<<"\n\n\tRoll No    : "<<rno<<"\n\tTotal      : "<<tot;

               cout<<"\n\tAverage    : "<<avg;

              }

};

Page 9: Pads lab manual final

void main()

{

   clrscr();

   statement obj;

   obj.get();

   obj.getsm();

   obj.display();

   getch();

}

OUTPUT

Enter the Roll no: 100

Enter two marks

90      

80

Enter the Sports Mark : 90

Roll No : 100

Total    : 260

Average : 86.66

Page 10: Pads lab manual final

EX.NO.4 POLYMORPHISM - FUNCTION OVERLOADING

PROGRAM

#include<iostream.h>

#include<conio.h>

int area(int);

int area(int,int);

float area(float,int,int);

void main()

{

clrscr();

cout<< "\n Area Of Square: "<< area(5);

cout<< "\n Area Of Rectangle: "<< area(4,4);

cout<< "\n Area Of Circle: "<< area(4.0,3,3);

getch();

}

int area(int a)

{

return (a*a);

}

int area(int a,int b)

{

return(a*b);

}

float area(float r,int a,int b)

{

return(3.14 * r * r);

}

OUTPUT

Area Of Square: 25

Area Of Rectangle: 16

Area Of Circle: 28.26

Page 11: Pads lab manual final

EX.NO.5a) VIRTUAL FUNCTION

PROGRAM

#include<iostream.h>

#include<conio.h>

class B

{

public:

virtual void display()

{

cout<<"Content Of base class:";

}};

class D1:public B

{

public:

void display()

{

cout<<"Content of first derived class:";

}};

class D2:public B

{

public:

void display(){

cout<<"Content of second derived class:";

}};

int main()

{

clrscr();

B *b;

D1 d1;

D2 d2;

b=&d1;

b->display();

b=&d2;

b->display();

getch();

return 0;

}

OUTPUT

Content of first derived class

Content of second derived class

Page 12: Pads lab manual final

EX.NO.5b) PURE VIRTUAL FUNCTION

PROGRAM

#include<iostream.h>

#include<conio.h>

class B

{

public:

virtual void display()=0;

};

class D1:public B

{

public:

void display()

{

cout<<"Content of first derived class:";

}};

class D2:public B

{

public:

void display(){

cout<<"Content of second derived class:";

}};

int main()

{

clrscr();

B *b;

D1 d1;

D2 d2;

b=&d1;

b->display();

b=&d2;

b->display();

getch();

return 0;

}

OUTPUT

Content of first derived class

Content of second derived class

Page 13: Pads lab manual final

EX.NO.6a) UNARY OPERATOR - MEMBER FUNCTION

PROGRAM

#include<iostream.h>

#include<conio.h>

class complex

{

     int a,b,c;

    public:

        complex(){}

        void getvalue()

       {

                 cout<<"Enter the Two Numbers:";

                 cin>>a>>b;

       }

                

  void operator++()

      {

                 a=++a;

                 b=++b;

       }

             

       void operator--()

       {

                 a=--a;

                 b=--b;

        }

             

        void display()

        {

                 cout<<a<<"+\t"<<b<<"i"<<endl;

         }

};

 

void main()

{

     clrscr();

Page 14: Pads lab manual final

     complex obj;

     obj.getvalue();

     obj++;

     cout<<"Increment Complex Number\n";

     obj.display();

     obj--;

     cout<<"Decrement Complex Number\n";

     obj.display();

     getch();

}

OUTPUT

Enter the two numbers: 3 6              

Increment Complex Number

4 +               7i

Decrement Complex Number

3 +               6i

Page 15: Pads lab manual final

EX.NO.6b) UNARY OPERATOR - FRIEND FUNCTION

PROGRAM

#include<iostream.h>

class complex

{

float real,imag;

public:

complex()

{

real=imag=0.0;

}

void read_data()

{

cout<<"real part?";

cin>>real;

cout<<"image part?";

cin>>imag;

}

void put_data()

{

cout<<"("<<real;

cout<<","<<imag<<")";

}

friend complex operator -(complex c1)

{

complex c;

c.real=c1.real;

c.imag=-c1.imag;

return(c);

}

};

void main()

{

complex c1,c2;

cout<<"enter complex c1"<<endl;

Page 16: Pads lab manual final

c1.read_data();

c2=-c1;

c2.put_data();

}

OUTPUT

enter complex c1

real part?6

image part?5

(-6,5)

Page 17: Pads lab manual final

EX.NO.6c) BINARY OPERATOR - MEMBER FUNCTION

PROGRAM

#include<iostream.h>

#include<conio.h>

 class complex

{

              int a,b;

    public:

              void getvalue()

              {

                 cout<<"Enter the value of Complex Numbers a,b:";

                 cin>>a>>b;

              }

              complex operator+(complex ob)

              {

                            complex t;

                            t.a=a+ob.a;

                            t.b=b+ob.b;

                            return(t);

              }

              complex operator-(complex ob)

              {

                            complex t;

                            t.a=a-ob.a;

                            t.b=b-ob.b;

                            return(t);

              }

              void display()

              {

                            cout<<a<<"+"<<b<<"i"<<"\n";

              }

};

void main()

{

   clrscr();

   complex obj1,obj2,result,result1;

 

   obj1.getvalue();

Page 18: Pads lab manual final

   obj2.getvalue();

 

   result = obj1+obj2;

   result1=obj1-obj2;

    cout<<"Input Values:\n";

   obj1.display();

   obj2.display();

  

   cout<<"Result:";

   result.display();

  result1.display();

     getch();

}

OUTPUT

Enter the value of Complex Numbers a, b

4                  5

Enter the value of Complex Numbers a, b

2                  2

Input Values

4 + 5i

2 + 2i

Result

6 +   7i

2 +   3i

Page 19: Pads lab manual final

EX.NO.6d) BINARY OPERATOR – FRIEND FUNCTION

PROGRAM

#include <iostream.h> 

#include<conio.h> 

class Values 

      int a,b; 

      public: 

     Values(){} 

                  Values(int aa,int bb) 

               { 

                      a=aa; 

                      b=bb; 

               } 

                   void show() 

               { 

                   cout <<a<<" "; 

                   cout <<b<<"\n"; 

                } 

                   friend Values operator+(Values p1 ,Values p2); //friend 

                   Values operator-(Values p2); 

                   Values operator=(Values p2); 

                   Values operator++(); 

}; 

 //Now,+is overloaded using friend function. 

             Values operator+(Values p1 ,Values p2) 

         { 

               Values temp; 

               temp.a =p1.a +p2.a; 

               temp.b =p1.b +p2.b; 

               return temp; 

         } 

              Values Values::operator-(Values p2) 

         { 

              Values temp; 

               temp.a =a +p2.b; 

               temp.b =a +p2.b; 

               return temp; 

          } 

Page 20: Pads lab manual final

              Values Values::operator=(Values p2) 

         { 

               a =p2.a; 

               b =p2.a; 

               return *this; 

          } 

              Values Values::operator++() 

         { 

              a++; 

              b++; 

              return *this; 

          } 

              void main() 

          { 

               clrscr(); 

               Values v1 (20,30),v2(15,40); 

               v1.show(); 

               v2.show(); 

               ++v1; 

               v1.show(); 

               v2 =++v1 ; 

               v1.show(); 

               v2.show(); 

               v1=v2; 

               v1.show(); 

               v2.show(); 

               getch(); 

         } 

OUTPUT

20 30

15 40

21 31

22 32

22 22

22 22

22 22

Page 21: Pads lab manual final

EX.NO.7a) CLASS TEMPLATE

PROGRAM

#include <iostream>

#include <vector>

using namespace std;

template <typename T>

class MyQueue{

std::vector<T> data;

public:

void Add(T const &);

void Remove();

void Print();};

 template <typename T> void MyQueue<T> ::Add(T const &d){

data.push_back(d);}

 template <typename T> void MyQueue<T>::Remove(){

data.erase(data.begin( ) + 0,data.begin( ) + 1);}

 template <typename T> void MyQueue<T>::Print(){

std::vector <int>::iterator It1;

It1 = data.begin();

for ( It1 = data.begin( ) ; It1 != data.end( ) ; It1++ )

cout << " " << *It1<<endl; }

//Usage for C++ class templates

int main(){

MyQueue<int> q;

q.Add(1);

q.Add(2);

 cout<<"Before removing data"<<endl;

q.Print();

 q.Remove();

cout<<"After removing data"<<endl;

q.Print();}

OUTPUT

Before removing data

1

2

After removing data

2

Page 22: Pads lab manual final

EX.NO.7b) FUNCTION TEMPLATE

PROGRAM:  

#include<iostream.h>#include<conio.h> template<class t> void swap(t &x,t &y){   t temp=x;   x=y;   y=temp;} void fun(int a,int b,float c,float d){   cout<<"\na and b before swaping :"<<a<<"\t"<<b;   swap(a,b);   cout<<"\na and b after swaping  :"<<a<<"\t"<<b;   cout<<"\n\nc and d before swaping :"<<c<<"\t"<<d;   swap(c,d);   cout<<"\nc and d after swaping  :"<<c<<"\t"<<d;}

void main(){    int a,b;    float c,d;    clrscr();    cout<<"Enter A,B values(integer):";    cin>>a>>b;    cout<<"Enter C,D values(float):";    cin>>c>>d;    fun(a,b,c,d);    getch();}

OUTPUT:

Enter A, B values (integer): 10  20Enter C, D values (float):    2.50  10.80 A and B before swapping: 10 20A and B after    swapping:  20 10 C and D before swapping: 2.50  10.80C and D after               swapping: 10.80  2.50

Page 23: Pads lab manual final

EX.NO.8a) EXCEPTION HANDLING

PROGRAM

#include<iostream.h>#include<conio.h>void test(int x){   try   {              if(x>0)                 throw x;        else                 throw 'x';   }    catch(int x)   {              cout<<"Catch a integer and that integer is:"<<x;   }    catch(char x)   {              cout<<"Catch a character and that character is:"<<x;   }} void main(){   clrscr();   cout<<"Testing multiple catches\n:";   test(10);   test(0);   getch();} 

OUTPUT

Testing multiple catchesCatch a integer and that integer is: 10Catch a character and that character is: x

Page 24: Pads lab manual final

EX.NO.8b) EXCEPTION HANDLING FOR DIVIDE BY ZERO EXCEPTION

PROGRAM

#include<iostream.h>#include<conio.h>void main(){   int a,b,c;   float  d;   clrscr();   cout<<"Enter the value of a:";   cin>>a;   cout<<"Enter the value of b:";   cin>>b;   cout<<"Enter the value of c:";   cin>>c;      try   {              if((a-b)!=0)              {                 d=c/(a-b);                 cout<<"Result is:"<<d;              }              else              {                 throw(a-b);              }   }    catch(int i)   {              cout<<"Answer is infinite because a-b is:"<<i;   }     getch();}

OUTPUT

              Enter the value for a: 20              Enter the value for b: 20              Enter the value for c: 40               Answer is infinite because a-b is: 0

Page 25: Pads lab manual final

EX.NO.9 STANDARD TEMPLATE LIBRARY

PROGRAM#include <iostream>#include <vector>#include <string>using namespace std;main(){ vector<string> SS; SS.push_back("The number is 10"); SS.push_back("The number is 20"); SS.push_back("The number is 30"); cout << "Loop by index:" << endl; int ii; for(ii=0; ii < SS.size(); ii++) { cout << SS[ii] << endl; } cout << endl << "Constant Iterator:" << endl; vector<string>::const_iterator cii; for(cii=SS.begin(); cii!=SS.end(); cii++) { cout << *cii << endl; } cout << endl << "Reverse Iterator:" << endl; vector<string>::reverse_iterator rii; for(rii=SS.rbegin(); rii!=SS.rend(); ++rii) { cout << *rii << endl; } cout << endl << "Sample Output:" << endl; cout << SS.size() << endl; cout << SS[2] << endl; swap(SS[0], SS[2]); cout << SS[2] << endl;}

OUTPUT

Loop by index:The number is 10The number is 20The number is 30Constant Iterator:The number is 10The number is 20The number is 30Reverse Iterator:The number is 30The number is 20The number is 10Sample Output:3The number is 30The number is 10

Page 26: Pads lab manual final

EX.NO.10a) FILE STREAM CLASSES

PROGRAM

#include<fstream.h>#include<stdio.h>#include<ctype.h>#include<string.h>#include<iostream.h>#include<conio.h>void main(){              char c,u;              char fname[10];              clrscr();              ofstream out;              cout<<"Enter File Name:";              cin>>fname;              out.open(fname);              cout<<"Enter the text(Enter # at end)\n";   //write contents to file              while((c=getchar())!='#')              {                            u=c-32;                            out<<u;              }              out.close();              ifstream in(fname);        //read the contents of file              cout<<"\n\n\t\tThe File contains\n\n";              while(in.eof()==0)              {                            in.get(c);                            cout<<c;              }              getch(); }

OUTPUT

Enter File Name: two.txtEnter contents to store in file (enter # at end)oops programmingThe File ContainsOOPS PROGRAMMING

Page 27: Pads lab manual final

EX.NO.10b) FILE STREAM USING MANIPULATOR

PROGRAM

#include <iostream>using namespace std;#include <iomanip> void main(void){

int p; cout<<"Enter a decimal number:"<<endl;cin>>p;cout<<p<< " in hexadecimal is: "<<hex<<p<<'\n'<<dec<<p<<" in octal is: "<<oct<<p<<'\n'<<setbase(10) <<p<<" in decimal is: "<<p<<endl;cout<<endl;

Output:

Enter a decimal number : 365365 in Hexadecimal is : 16d365 in Octal is : 555365 in Decimal is : 555

Page 28: Pads lab manual final

EX.NO.11a) APPLICATION OF STACK-CONVERT INFIX TO POSTFIX EXPRESSION

PROGRAM

#include<stdio.h>#include<ctype.h>#include<string.h>static char str[20];int top=-1;main(){ char in[20],post[20],ch;int i,j,l;clrscr();printf("enter the string");gets(in);l=strlen(in);for(i=0,j=0;i<l;i++)if(isalpha(in[i]))post[j++]=in[i];else{ if(in[i]=='(')push(in[i]);else if(in[i]==')')while((ch=pop())!='(')post[j++]=ch;else{while(priority(in[i])<=priority(str[top]))post[j++]=pop();push(in[i]);}}while(top!=-1)post[j++]=pop();post[j]='\0';printf("\n equivalent infix to postfix is:%s",post);getch();}priority (char c){switch(c){ case'+':case'-': return 1;176case'*':case'/':return 2;case'$':return 3;}return 0;}push(char c){str[++top]=c;}pop(){return(str[top--]);}}

Page 29: Pads lab manual final

OUTPUT

enter the string(a+b)-(c-d)*e/f

equivalent infix to postfix is:ab+cd-e*f/-

enter the stringa+b/c*d

equivalent infix to postfix is:abc/d*+

Page 30: Pads lab manual final

EX.NO.11b) APPLICATION OF QUEUE

PROGRAM

#include <iostream.h>

#include <stdlib.h>

struct node

{

int info;

struct node *ptr;

}*front,*rear,*temp,*front1;

int frontelement();

void enq(int data);

void deq();

void empty();

void display();

void create();

void queuesize();

int count = 0;

void main()

{

int no, ch, e;

cout<<"\n 1 - Enque";

cout<<"\n 2 - Deque";

cout<<"\n 3 - Front element";

cout<<"\n 4 - Empty";

Page 31: Pads lab manual final

cout<<"\n 5 - Exit";

cout<<"\n 6 - Display";

cout<<"\n7 - Queue size";

create();

while (1)

{

cout<<"\n Enter choice : ";

cin>>ch;

switch (ch)

{

case 1:

cout<<”Enter data : ";

cin>>no;

enq(no);

break;

case 2:

deq();

break;

case 3:

e = frontelement();

if (e != 0)

cout<<"Front element : ">> e;

else

cout<<"\n No front element in Queue as queue is empty";

break;

case 4:

empty();

break;

case 5:

Page 32: Pads lab manual final

exit(0);

case 6:

display();

break;

case 7:

queuesize();

break;

default:

cout<<"Wrong choice, Please enter correct choice ";

break;

}

}

}

/* Create an empty queue */

void create()

{

front = rear = NULL;

}

/* Returns queue size */

void queuesize()

{

Cout<<"\n Queue size : %d", count”;

}

/* Enqueing the queue */

void enq(int data)

{

Page 33: Pads lab manual final

if (rear == NULL)

{

rear = (struct node *)malloc(1*sizeof(struct node));

rear->ptr = NULL;

rear->info = data;

front = rear;

}

else

{

temp=(struct node *)malloc(1*sizeof(struct node));

rear->ptr = temp;

temp->info = data;

temp->ptr = NULL;

rear = temp;

}

count++;

}

/* Displaying the queue elements */

void display()

{

front1 = front;

if ((front1 == NULL) && (rear == NULL))

{

Cout<<”Queue is empty";

return;

}

Page 34: Pads lab manual final

while (front1 != rear)

{

Cout<< front1->info;

front1 = front1->ptr;

}

if (front1 == rear)

cout<< front1->info;

}

/* Dequeing the queue */

void deq()

{

front1 = front;

if (front1 == NULL)

{

Cout<<”\n Error: Trying to display elements from empty queue";

return;

}

else

if (front1->ptr != NULL)

{

front1 = front1->ptr;

cout<<"\n Dequed value : ", front->info;

free(front);

front = front1;

}

else

{

Page 35: Pads lab manual final

Cout<<”\n Dequed value : %d", front->info”;

free(front);

front = NULL;

rear = NULL;

}

count--;

}

/* Returns the front element of queue */

int frontelement()

{

if ((front != NULL) && (rear != NULL))

return(front->info);

else

return 0;

}

/* Display if queue is empty or not */

void empty()

{

if ((front == NULL) && (rear == NULL))

cout<<”\n Queue empty";

else

cout<<”\nQueue not empty";

}

Page 36: Pads lab manual final

OUTPUT

1 - Enque

2 - Deque

3 - Front element

4 - Empty

5 - Exit

6 - Display

7 - Queue size

Enter choice : 1

Enter data : 14

Enter choice : 1

Enter data : 85

Enter choice : 1

Enter data : 38

Enter choice : 3

Front element : 14

Enter choice : 6

14 85 38

Enter choice : 7

Queue size : 3

Enter choice : 2

Dequed value : 14

Enter choice : 6

85 38

Enter choice : 7

Queue size : 2

Enter choice : 4

Queue not empty

Enter choice : 5

Page 37: Pads lab manual final

EX.NO.12 BINARY SEARCH TREE

PROGRAM

#include<iostream.h>

#include<conio.h>

#include<process.h>

struct tree_node

{

tree_node *left;

tree_node *right;

int data;

} ;

class bst

{

tree_node *root;

public:

bst()

{

root=NULL;

}

int isempty()

{

return(root==NULL);

}

void insert(int item);

void inordertrav();

void inorder(tree_node *);

void postordertrav();

void postorder(tree_node *);

void preordertrav();

void preorder(tree_node *);

};

void bst::insert(int item)

{

tree_node *p=new tree_node;

tree_node *parent;

p->data=item;

p->left=NULL;

p->right=NULL;

Page 38: Pads lab manual final

parent=NULL;

if(isempty())

root=p;

else

{

tree_node *ptr;

ptr=root;

while(ptr!=NULL)

{

parent=ptr;

if(item>ptr->data)

ptr=ptr->right;

else

ptr=ptr->left;

}

if(item<parent->data)

parent->left=p;

else

parent->right=p;

}

}

void bst::inordertrav()

{

inorder(root);

}

void bst::inorder(tree_node *ptr)

{

if(ptr!=NULL)

{

inorder(ptr->left);

cout<<" "<<ptr->data<<" ";

inorder(ptr->right);

}

}

void bst::postordertrav()

{

postorder(root);

Page 39: Pads lab manual final

}

void bst::postorder(tree_node *ptr)

{

if(ptr!=NULL)

{

postorder(ptr->left);

postorder(ptr->right);

cout<<" "<<ptr->data<<" ";

}

}

void bst::preordertrav()

{

preorder(root);

}

void bst::preorder(tree_node *ptr)

{

if(ptr!=NULL)

{

cout<<" "<<ptr->data<<" ";

preorder(ptr->left);

preorder(ptr->right);

}}

void main(){

bst b;

b.insert(52);

b.insert(25);

b.insert(50);

b.insert(15);

b.insert(40);

b.insert(45);

b.insert(20); cout<<"inorder"<<endl;

b.inordertrav();

cout<<endl<<"postorder"<<endl;

b.postordertrav();

cout<<endl<<"preorder"<<endl;

b.preordertrav();

getch();}

Page 40: Pads lab manual final

OUTPUT

inorder 15 20 25 40 45 50 52postorder 20 15 45 40 50 25 52preorder 52 25 15 20 50 40 45

Page 41: Pads lab manual final

EX.NO.13 TREE TRAVERSAL TECHNIQUES

PROGRAM

#include<iostream.h>

#include<conio.h>

#include<process.h>

struct tree_node

{

tree_node *left;

tree_node *right;

int data;

} ;

class bst

{

tree_node *root;

public:

bst()

{

root=NULL;

}

int isempty()

{

return(root==NULL);

}

void insert(int item);

void inordertrav();

void inorder(tree_node *);

void postordertrav();

void postorder(tree_node *);

void preordertrav();

void preorder(tree_node *);

};

void bst::insert(int item)

{

tree_node *p=new tree_node;

tree_node *parent;

p->data=item;

p->left=NULL;

Page 42: Pads lab manual final

p->right=NULL;

parent=NULL;

if(isempty())

root=p;

else

{

tree_node *ptr;

ptr=root;

while(ptr!=NULL)

{

parent=ptr;

if(item>ptr->data)

ptr=ptr->right;

else

ptr=ptr->left;

}

if(item<parent->data)

parent->left=p;

else

parent->right=p;

}

}

void bst::inordertrav()

{

inorder(root);

}

void bst::inorder(tree_node *ptr)

{

if(ptr!=NULL)

{

inorder(ptr->left);

cout<<" "<<ptr->data<<" ";

inorder(ptr->right);

}

}

void bst::postordertrav()

{

postorder(root);

}

Page 43: Pads lab manual final

void bst::postorder(tree_node *ptr)

{

if(ptr!=NULL)

{

postorder(ptr->left);

postorder(ptr->right);

cout<<" "<<ptr->data<<" ";

}

}

void bst::preordertrav()

{

preorder(root);

}

void bst::preorder(tree_node *ptr)

{

if(ptr!=NULL)

{

cout<<" "<<ptr->data<<" ";

preorder(ptr->left);

preorder(ptr->right);

}

}

void main()

{

bst b;

b.insert(52);

b.insert(25);

b.insert(50);

b.insert(15);

b.insert(40);

b.insert(45);

b.insert(20); cout<<"inorder"<<endl;

b.inordertrav();

cout<<endl<<"postorder"<<endl;

b.postordertrav();

cout<<endl<<"preorder"<<endl;

b.preordertrav();

getch();}

Page 44: Pads lab manual final

OUTPUT

inorder 15 20 25 40 45 50 52postorder 20 15 45 40 50 25 52preorder 52 25 15 20 50 40 45

Page 45: Pads lab manual final

EX.NO.14a) MINIMUM SPANNING TREE USING PRIM’S ALGORITHM

PROGRAM

#include<iostream>#include<conio.h>#include<stdlib.h>using namespace std;int cost[10][10],i,j,k,n,stk[10],top,v,visit[10],visited[10],u; main(){

int m,c;cout <<"enterno of vertices";cin >> n;cout <<"ente no of edges";cin >> m;cout <<"\nEDGES Cost\n";for(k=1;k<=m;k++){

cin >>i>>j>>c;cost[i][j]=c;

}for(i=1;i<=n;i++)for(j=1;j<=n;j++)

if(cost[i][j]==0)cost[i][j]=31999;

 cout <<"ORDER OF VISITED VERTICES";k=1;while(k<n){

m=31999;if(k==1){

for(i=1;i<=n;i++)for(j=1;j<=m;j++)if(cost[i][j]<m){

m=cost[i][j];u=i;

}}else{

for(j=n;j>=1;j--)if(cost[v][j]<m && visited[j]!=1 && visit[j]!=1){

visit[j]=1;stk[top]=j;top++;m=cost[v][j];u=j;

}}cost[v][u]=31999;v=u;

Page 46: Pads lab manual final

cout<<v << " ";k++;visit[v]=0; visited[v]=1;

}}

OUTPUT

enterno of vertices7ente no of edges9EDGES Cost1 6 106 5 255 4 224 3 123 2 162 7 145 7 244 7 181 2 28

ORDER OF VISITED VERTICES1 6 5 4 3 2

Page 47: Pads lab manual final

Ex.no.14b) IMPLEMENTATION OF KRUSKAL’S ALGORITHM

PROGRAM

#include<iostream.h>#include<conio.h>typedef struct edge{int node1,node2,wt;}edge;void sortedge(edge a[],int n){int i,j;edge temp;for(i=0;i<n;i++)for(j=i+1;j<n;++j)if(a[i].wt>a[j].wt){temp=a[i];a[i]=a[j];a[j]=temp;}}int check(int p[],int i,int j){int v1,v2;v1=i;v2=j;while(p[i]>-1)i=p[i];while(p[j]>-1)j=p[j];if(i!=j){p[j]=i;cout<<"v1->v2\n",v1,v2;return 1;}return 0;}void main(){edge e[100];int r[100],n,i,j,k=1,m,cost=0;clrscr();cout<<"Kruskal algorithm\n";cout<<"Enter the no of nodes:";cin>>n;for(i=0;i<n;i++)r[i]=-1;i=0;cout<<"\nEnter no of edges:";cin>>m;for(i=0;i<m;i++){cout<<"\nENter the edge and cost of the edge:";cin>>e[i].node1;cin>>e[i].node2;cin>>e[i].wt;

Page 48: Pads lab manual final

}sortedge(e,m);cout<<"\nEdges of the MST\n";i=0;while(k<n){if(check(r,e[i].node1,e[i].node2)){k++;cost=cost+e[i].wt;i++;}}cout<<"Minimum cost:%d",cost;getch();}

OUTPUT

Kruskal algorithm

Enter the no of nodes:4

Enter no of edges:4

Enter the edge and cost of the edge:1

2

1

Enter the edge and cost of the edge:1

3

3

Enter the edge and cost of the edge:2

3

2

Enter the edge and cost of the edge:2

4

1

Edges of the MST

1->2

2->4

2->3

Minimum cost:4

Page 49: Pads lab manual final

EX.NO.15 IMPLEMENTATION OF DIJKSTRA’S ALGORITHM

PROGRAM

#include<iostream.h>#include<conio.h>#define INFINITY 1000int a[10][10],b[10][10];int i,j,k,n;void input();void initialize();void spath();void display();void input(){cout<<"\n\t *** DIJKSTRA'S ALGORITHM ***";cout<<"\n enter the no of vertices:";cin>>n;for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(i!=j){cout<<"cost between "<<i<<j;cin>>a[i][j];}}}void initialize(){for(i=1;i<=n;i++)a[i][j]=0;for(i=1;i<=n;i++)for(j=1;j<=n;j++){b[i][j]=a[i][j];if(!a[i][j] && (i!=j)){b[i][j]=INFINITY;}}}void spath(){for(k=1;k<=n;k++)for(i=1;i<=n;i++)for(j=1;j<=n;j++)if((b[i][k] && b[k][j]) && (b[i][k]+b[k][j]<b[i][j])){b[i][j]=b[i][k]+b[k][j];}}void display(){i=1;if(i<n){for(j=2;j<=n;j++)cout<<"Minimum cost FROM source vertex 1 TO is : "<<j<<b[i][j];}}void main(){clrscr();input();initialize();spath();display();getch();}

Page 50: Pads lab manual final

OUTPUT

*** DIJKSTRA’S ALGORITHM ***

enter the no of vertices: 5

cost between1—2: 2

cost between1—3: 1

cost between1—4: 0

cost between1—5: 0

cost between2—1: 2

cost between2—3: 5

cost between2—4: 4

cost between2—5: 0

cost between3—1: 1

cost between3—2: 5

cost between3—4: 3

cost between3—5: 2

cost between4—1: 0

cost between4—2: 4

cost between4—3: 3

cost between4—5: 6

cost between5—1: 0

cost between5—2: 0

cost between5—3: 2

cost between5—4: 6

minimum cost FROM 1 TO 2 is : 2

minimum cost FROM 1 TO 3 is : 1

minimum cost FROM 1 TO 4 is : 4

minimum cost FROM 1 TO 5 is : 3