Archive for the ‘STACK’ Category

EVALUATION_POSTFIX

March 27, 2008

EVALUATIO OF POSTFIX EXPRESSION

HOME
/*….PROGRAM
TO FIND THE VALUE OF THE POSTFIX EXPRESSION.*/


#include<iostream.h>
#include<ctype.h>
#include<math.h>
#include<stdlib.h>
class
post//CLASS
DECLARATION

{
private:
  
 int res,x;

   
char data,*exp;

  
 post *next;

public:
  
 void evaluate(char *);

  
 void push(int);

   
int pop();

   
void show();

}
*top;

/*FUNCTION
FOR EVALUATION OF POSTFIX EXPRESSION*/

void
post::evaluate(char *c)

{
  
 exp=c;

  
 int n1,n2,res,i;

for(i=0;exp[i]!=”;i++)
  
 {

  
   if( isdigit(exp[i]) )

  
   {

  
   int item=exp[i]-‘0’;

  
   push(item);

  
    }

     
else

  
   {

  
 n1=pop();

  
 n2=pop();

  
     
     

       
switch(exp[i])

  
      {

   
     case ‘+’:

  
       
 res=n1+n2;

  
      
     break;

  
  case’-‘:

  
      res=n2-n1;

  
          
break;

  
     case ‘*’:

  
       
 res=n1*n2;

  
       
 break;

       
case ‘/’:

  
       
 res=n2/n1;

  
       
 break;

  
  case ‘$’:

  
       
 res=pow(n2,n1);

  
        
 break;

      
default:

  
cout<<“ENTER CORRECT EXPRESION”;

  
    exit(0);

  
      }  
 

    
push(res);

  
   }

  
 }

}
  
 

//FUNCTOIN
FOR PUSHING DATA

void
post::push(int item)

{
  
 post *n,*temp;

  
 n=new(post);

  
 n->data=item;

  
 n->next=NULL;

  
 if(top==NULL)

  
     top=n;

  
 else

  
 {

  
     temp=top;

  
     n->next=top;

  
     top=n;

  
 }

}

//FUNCTION
FOR SHOWING DATA

void
post::show()

  
 {

  
 cout<<“THE RESULT IS”;

  
 res=pop();

  
 cout<<res;  
     

  
 }

//FUNCTION
FOR POPPING DATA

int
post::pop()

{

  
 post *temp ;

  
 temp=top;

  
 x=temp->data;

  
 top=temp->next;

  
 return(x);

  
 delete temp;

 
 

}

void
main()//MAIN()
FUNCTION STARTS

{
  
 char s[22];

  
 top=NULL;

  
 post k;//OBJECT
CREATION

  
 cout<<“enter the POSTFIX expresion”;

  
 cin>>s;

 
    k.evaluate(s);

  
k.show();

}

/*
OUTPUT:
CASE
1:

enter
the POSTFIX

      
expresion 623+-382/+*2$3+

THE
RESULT IS 52

CASE
2:

enter
the POSTFIX

       
expresion 234*+

THE
RESULT IS 14

 Press
any key to continue

CASE
3:

enter
the POSTFIX expresion 12S+

 ENTER
CORRECT EXPRESION

 
Press any key to continue

*/

HOME

EVALUATION_PREFIX

March 27, 2008

EVALUATION OF PREFIX EXPRESSION

HOME
/*…PROGRAM
FOR EVALUATION OF PREFIX

 EXPRESION
SUING STACK AND SELF REFERENTIAL CALSSES..*/

#include<iostream.h>
#include<math.h>
#include<ctype.h>
#include<string.h>

//DECLARATION
OF THE SELFREFEENTIAL CLASSES

class
prefix

{
  
 int data;

  
 prefix *next;

public:
       //MEMBER FUCTIONS

DECLARATION
  
 void evaluate(char []);

  
 void push(int );

  
 int pop();

  
 void show();

}*top;

/*FUNCTION
FOR EVALUATION OF PREFIX EXPRESION*/

void
prefix::evaluate(char *exp)

{
int
res;

for(int
i=0;exp[i]!=”;i++)

{
  
 if(isdigit(exp[i]))

  
 {

  
 int item=exp[i]-‘0’;

  
 push(item);

  
 }

  
 else

  
 {

  
 int n1,n2;

  
 n1=pop();

  
 n2=pop();

  
 switch(exp[i])

  
 {

  
 case ‘+’:

  
     res=n1+n2;

  
     break;

  
 case ‘-‘:

  
     res=n2-n1;

  
     break;

  
 case ‘*’:

  
     res=n2*n1;

      
     break;

  
 case ‘$’:

  
     res=pow(n2,n1);

  
     break;

  
 case ‘/’:

  
     res=n2/n1;

  
     break;

  
 default:

  
     cout<<“ENTER
CORRECT EXPRESION”;

  
       
 }

  
 push(res);

  
     }

  
 }

}
//FUNCTION
FOR PUSHING DIGITS

void
prefix::push(int ele)

{
  
 prefix *n,*temp;

  
 n=new(prefix);

  
 n->data=ele;

  
 n->next=NULL;

  
 temp=top;

  
 if(top==NULL)

  
     top=n;

  
 else

  
 {

  
     temp=top;

  
     n->next=temp;

  
     top=n;

  
 }

}

//FUNCTION
FOR POPPING DIGITS

int
prefix::pop()

{
  
 int t;

  
 prefix *temp;

  
 

  
 if(top==NULL)

cout<<“LIST
IS EMPTY:”;

  
 else

  
 {

  
 temp=top;

  
 t=top->data;

  
 top=temp->next;

  
 delete temp;

  
 }

  
 return(t);

}

//FUNCTION
FOR SHOWING OUTPUT

void
prefix::show()

{
  
 int m=pop();

cout<<“AFTER
EVALUATION THE

       
VALUE OF THE EXPRESION  ->”;

  
 cout<<m;

}
void
main()//MAIN()
FUNCTION STARTS

{
  
 char x[22],*z;

  
 top=NULL;

prefix
p;//OBJECT

CREATION
  
cout<<“ENTER THE PREFIX EXPRESION”;

   
cin>>x;

z=strrev(x);//REVERSING OF THE

STRING
  
 p.evaluate(z);

  
 p.show();

}//END OF MAIN()
//END
OF PROGRAM

/*OUTPUT:
ENTER
THE PREFIX EXPRESION+1*23

AFTER
EVALUATION THE

 
VALUE OF THE EXPRESION  ->7

Press
any key to continue

ENTER
THE PREFIX EXPRESION+2-$24*52

AFTER
EVALUATION THE VALUE

    
OF THE EXPRESION  ->-4

Press any key to

continue*/

HOME

CONVERSION_INFIX_TO_POSTFIX

March 27, 2008

INFIX TO POSTFIX CONVERSION

HOME
/*..PROGRAM
FOR CONVERSION OF THE INFIX

EXPRESSION INTO POSTFIX
EXPRESSION..*/

#include<iostream.h>
#include<ctype.h>
#include<math.h>
#include<string.h>
int
j,q,m=0;

char
a,b=NULL;

class
postfix //CLASS
DECLARATION

{
private:
  
 

   
char data,*expr,R[22];

  
 postfix *next;

public:
  
 

  
 void evaluate(char *);

  
 void push(char);

  
     char pop();

  
 void show(int);

  
 int priority(char);

}
*top ;

//FUNCTION
FOR EXPRESSION CONVERSION

void
postfix::evaluate(char *c)

{
expr=c;
  
 

 
for(int i=0,j=-1;expr[i]!=”;i++)

 
{

 
if( isdigit(expr[i])||isalpha(expr[i]) )

  
{

   
R[++j]=expr[i];

  
}

 
else

  
{

   
if(top!=NULL)

   
{

  
 b=pop();

  
 push(b);

   
}

 if(expr[i]==’)’)
  
 push(expr[i]);

else
  
 if(expr[i]=='(‘)

  
 {

  
 R[++j]=pop();

  
 m++;

  
 }

  
 else if(expr[i]=='(‘)

  
 push(expr[i]);

  
 else

  
 {

  
 int n1=priority(b);

  
 int n2=priority(expr[i]);

  
  if(n1<=n2)

  
 push(expr[i]);

  
 else

  
 {

  
  R[++j]=pop();

  
  push(expr[i]);

  
 }

  
 }

  
 }

  
 }

 while(top!=NULL)

 R[++j]=pop();
 
        

}
char
postfix::pop()//FUNCTION
FOR POPPING

{
  
 char x=NULL;

  
 postfix *temp;

  
 temp=top;

  
 x=temp->data;

  
 if(top==NULL)

  
     return(‘0’);

  
 else

  
 {

  
  top=temp->next;

  
  delete temp;

  
 }

  
 return(x);    

}
  
 

//FUNCTION
FOR CHECKING PRIORITY

int
postfix::priority(char y)

{
  
 if(y==’$’)

  
     return(3);

  
 if(y==’*’||y==’/’)

  
     return(2);

  
 if(y==’+’||y==’-‘)

  
 return(1);

  
 else

  
     return(0);

  
 

}

//FUNCTION
FOR PUSHING ELEMENTS

void
postfix::push(char ch)

{
 
postfix *n,*temp;

 
n=new(postfix);

 
n->data=ch;

 
n->next=NULL;

 
if(top==NULL)

  
   top=n;

 
else

 
{

 
temp=top;

 
n->next=temp;

 
top=n;

 
}

 

}
//FUNCTION
FOR DISLAYING OUTPUT

void
postfix::show(int q)

{

   
for(int i=0;i<q-m;i++)

  
 {

  
 if(R[i]=='(‘||R[i]==’)’);

  
 else

  
     cout<<R[i];

  
 }

}

void
main()//MAIN()
FUNCTION STARTS

{
  
 char s[22];

  
 top=NULL;

  
 postfix k;//OBJECT
CREATION

  
 cout<<“enter the INFIX expresion”;

  
 cin>>s;

  
 int q=strlen(s);

  
 k.evaluate(s);

  
 cout<<“THE POSTFIX EXPRESION IS –>”;

   
k.show(q);

}//END OF MAIN()
//END
OF PROGRAM

/*
OUTPUT:

enter
the INFIX expresiona$b*c-d+e/f/(g+h)

THE
POSTFIX EXPRESION IS –>ab$c*d-ef/gh+/+

Press
any key to continue

*/

HOME

CONVERSION_INFIX_TO_PREFIX

March 27, 2008

INFIX TO PREFIX CONVERSION

HOME

/*PROGRAM
FOR THE CONVERSTION FROM

THE INFIX EXPRESSION TO
PREFIX EXPRESSION..*/

#include<iostream.h>
#include<ctype.h>
#include<math.h>
#include<string.h>
int
j,q;

char
a,b=NULL;

class
stack //CLASS
DECLARATION

{
private:
   
char data,*expr,R[22];

  
 stack *next;

public:
  
 

  
 void evaluate(char *);

  
 void push(char);

  
 void pushexp(int); //MEMBER
FUNCTIONS

   
char pop();

  
 void show(int);

  
 int prio(char);

}
*top ;

void
stack::evaluate(char *c)

{
expr=c;
  
 

 
for(int i=0,j=-1;expr[i]!=”;i++)

 
{

 if(
isdigit(expr[i])||isalpha(expr[i]) )

 {
 R[++j]=expr[i];

 }
  
 

 else
  
     

{
  
         

if(top!=NULL)
  
         

{
  
       
   

b=pop();
push(b);
  
       
   

}
  
         

int
n1=prio(b);

int
n2=prio(expr[i]);

if(n1<=n2)
 push(expr[i]);
else
 {
 R[++j]=pop();
 push(expr[i]);
 }
 }
 }
 while(top!=NULL)

 R[++j]=pop();
    
    

}
char
stack::pop()

{
  
 char x=NULL;

  
 stack *temp;

  
 temp=top;

  
 x=temp->data;

  
 if(top==NULL)

  
     return(‘0’);

  
 else

  
 {


  
 top=temp->next;

 
  
 }

  
 return(x);    

}
  
 

int
stack::prio(char y)

{
  
 if(y==’$’)

  
     return(3);

  
 if(y==’*’||y==’/’)

  
     return(2);

  
 if(y==’+’||y==’-‘)

  
 return(1);

  
 else

  
     return(0);

  
 

}

void
stack::push(char ch)

{
 
stack *n,*temp;

 
n=new(stack);

 
n->data=ch;

 
n->next=NULL;

 
if(top==NULL)

  
   top=n;

 
else

 
{

  
   temp=top;

  
   n->next=temp;

  
   top=n;

 
}

 

}
void
stack::show(int q)

{
   
for(int i=q-1;i>=0;i–)

  
 {

  
     cout<<R[i];

  
 }

}

void
main()

{
  
 char s[22];

  
 top=NULL;

  
 stack k;

cout<<“enter
the INFIX expresion\n”;

  
 cin.getline(s,22);

  
 int q=strlen(s);

  
 char *e;

  
 e=strrev(s);

  
 k.evaluate(e);

cout<<“THE
PREFIX EXPRESION IS –>”;

   
k.show(q);

}
//PROGRAM
ENDS

/*
OUTPUT:
enter
the INFIX expresion

A+B*C-D/E
THE
PREFIX EXPRESION IS –>-+A*BC/DE

Press
any key to continue

*/

HOME

STACK_PUSH_POP

March 27, 2008

STACK OPERATION PUSH & POP

HOME
/*..PROGRAM
TO REVERSE THE STRING

 USING
STACK WITH LINKED REPRESENATION

  
AND SELF REFERENTION CLASSES… ..*/


#include<iostream.h>
class
stack //CLASS
DECLARATION

{
private:
  
 char data;

  
 stack *next;

public:
  
 void push(char);

  
 void pop();

}
*top;

//FUNCTION
FOR PUSHING DATA

void
stack::push(char ch)

{
  
 stack *n,*temp;

  
 n=new(stack);

  
 n->data=ch;

  
 n->next=NULL;

  
 if(top==NULL)

  
     top=n;

  
 else

  
 {

  
 temp=top;

  
  n->next=temp;

  
 top=n;

  
 }

}
//FUNCTION
FOR POPPING DATA

void
stack::pop()

{
  
 stack *temp,*t;

  
 temp=top;

  
 while(temp!=NULL)

  
 {

  
 cout<<temp->data<<” “;

  
 t=top;

  
 top=temp->next;

  
 temp=temp->next;

  
 delete t;

  
     

  
 }

}
void
main()//MAIN()
FUNCTION STARTS

{
  
 char x[22];

  
 top=NULL;

  
 stack s;//OBJECT
CREATION

cout<<“ENTER
THE STRING

       
TO BE PUSHED INTO THE STACK\n”;

  
 cin>>x;

  
 for(int i=0;x[i]!=”;i++)

  
     s.push(x[i]);

  
 

cout<<“AFTER
POPPING THE STRING IS\n”;

  
       
 s.pop();

  
 

}//END OF MAIN()

//PROGRAM
ENDS

/*
OUTPUT:

ENTER
THE STRING   BHANU

THE
STRING IN THE REVERSE ORDER

UNAHB
Press
any key to continue*/

HOME