SlideShare ist ein Scribd-Unternehmen logo
1 von 23
1)‘C’ Program
/************************************************************
Program for implementing a stack using arrays.It involves
various operations such as push,pop,stack empty,stack full and
display.
*************************************************************/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define size 5
/* stack structure*/
struct stack {
               int s[size];
               int top;
            }st;
/*
  The stfull Function
  Input:none
  Output:returns 1 or 0 for stack full or not
  Called By:main
  Calls:none
*/
int stfull()
{
  if(st.top>=size-1)
return 1;
  else
   return 0;
}
/*
  The push Function
  Input:item which is to be pushed
  Output:none-simply pushes the item onto the stck
  Called By:main
  Calls:none
*/
void 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 stempty()
{
  if(st.top==-1)
   return 1;
  else
   return 0;
}
/*
  The pop Function
  Input:none
  Output:returns the item which is popped from the stack
  Called By:main
  Calls:none
*/
int pop()
{
  int item;
  item=st.s[st.top];
  st.top – –;
  return(item);
}
/*
  The display Function
  Input:none
  Output:none-displys the contents of the stack
  Called By:main
  Calls:none
*/
void display()
{
  int i;
  if(stempty())
     printf(―n Stack Is Empty!‖);
  else
  {
    for(i=st.top;i>=0;i– –)
    printf(―n%d‖,st.s[i]);
  }
}
/*
  The main Function
  Input:none
  Output:none
  Called By:O.S.
  Calls:push,pop,stempty,stfull,display
*/
void main(void)
{
int item,choice;
char ans;
st.top=-1;
clrscr();
printf(―ntt Implementation Of Stack‖);
do
{
  printf(―n Main Menu‖);
  printf(―n1.Pushn2.Popn3.Displayn4.exit‖);
  printf(―n Enter Your Choice‖);
  scanf(―%d‖,&choice);
  switch(choice)
{
     case 1:printf(―n Enter The item to be pushed‖);
                 scanf(―%d‖,&item);
                 if(stfull())
                  printf(―n Stack is Full!‖);
                 else
                  push(item);
                break;
     case 2:if(stempty())
                printf(―n Empty stack!Underflow !!‖);
            else
          {
             item=pop();
             printf(―n The popped element is %d‖,item);
          }
          break;
     case 3:display();
                    break;
     case 4:exit(0);
  }
  printf(―n Do You want To Continue?‖);
  ans=getche();
  }while(ans ==‘Y‘ ||ans ==‘y‘);
getch();
}
/******************** End Of Program ************************/
2)‘C’ Program
/************************************************************
Program to evaluate a given postfix expression. The program
handles postfix expressions with only binary arithmatic
operators +,-,*,/ and ^. Operands are single digit numbers
between 0-9.
*************************************************************/
/* List of include files */
#include <stdio.h>
#include <conio.h>
#include <process.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
/* List of defined constants */
#define size 80
/* Global declarations */
struct stack
{         double   s[size];
            int top;
}st;
enum Type { operand, oprtor };
/*      The Push function
        Input : A value to be pushed on global stack
        Output: None, modifies global stack and its top
    Parameter Passing Method :By Value
            Called By : Post()
Calls :none
*/
void Push(double Val)
{
      if ( st.top+1 >= size )
           printf(―Error: Stack is Fulln‖);
      st.top++;
      st.s[st.top] = Val;
}
/*    The Pop function
      Input : None, uses global stack and top
      Output: Returns the value on top of stack
      Parameter Passing Method :None
      Called By : post()
      Calls :none
*/
double Pop()
{
      double Val;
      if ( st.top == -1 )
           printf(―Error: Stack is Emptyn‖);
      Val = st.s[st.top];
      st.top—;
      return(Val);
}
/*    The gettokn function
      Input : Given infix expression
      Output: Returns the next character from the expression
      Parameter Passing Method : By reference
      Called By : post()
      Calls : None
*/
char gettokn( char exp[])
{
      static int i = 0;
      char ch;
      ch = exp[i];
      i++;
      return ch;
}
/*    The Gettype function
      Input : A character from infix expression
      Output: Returns the token type as operand or oprtor
      Parameter Passing Method : By value
      Called by : post()
Calls : none
*/
enum Type Gettype(char ch)
{
      ch = toupper(ch); /* convert to upper case */
      if ( ch >= ‗0‘ && ch <= ‗9‘)
           return operand;
      if ( ch == ‗+‘|| ch == ‗-‘||
            ch == ‗*‘|| ch == ‗/‘ ||
ch == ‗^‘ )
             return oprtor;
        /* Error */
     printf(―Invalid operatorn‖);
}
/*     The post function which contains major logic of
       the program.
       Input : A post Expression of single digit operand
       Output: Resultant value after evaluating the expression
       Parameter Passing Method :by reference
       Called By : main()
       Calls :gettoken(), Push(), Pop() and
              Gettype()
*/
double post( char exp[])
{
      char    ch,type;
      double result, Val, Op1, Op2;
      st.top = 0;
      ch = gettokn(exp);
      while ( ch != ‗$‘ )
      {
           type = Gettype(ch);
           if( type ==operand)
           {
                Val = ch - 48;
                Push( Val);
           }
           else
           if ( type == oprtor)
           {
                 Op2 = Pop();
                 Op1 = 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 */
                Push (result);
           }
           ch = gettokn(exp);
      }/* while */
      result = Pop();
      return(result);
}
/*    The main function
Input : None
         Output : None
         Parameter Passing Method : None
         called By : OS
         Calls : post()
    */
    void main ()
    {
            /* Local declarations */
            char     exp[size];
            int      len;
            double   Result;
            clrscr();
            printf(―‖Enter the postfix Expressionn");
            scanf(―%S‖,exp);
            len = strlen(exp);
            exp[len] = ‗‘; /* Append at the end */
            Result = post(exp);
            printf(―The Value of the expression is %fn‖, Result);
            getch();
            exit(0);
    }
    / ************** End of the Program ***************** /
3) ‘C’ Program
/ **********************************************************
Program for conversion of Infix expression to Postfix form.
************************************************************/
#include<stdio.h>
#include<conio.h>
#include<alloc.h>
char inf[40],post[40];
int top=0,st[20];
void postfix();
void push(int);
char pop();
/*
The main Function
Input:none
Output:none
Called BY:O.S.
Calls:postfix
*/
void main(void)
{
         clrscr();
         printf(―ntEnter the infix expression :: nntt‖);
         scanf(―%s‖, inf);
         postfix();
         getch();
}
/*
The postfix Function
Input:none
Output:none
Called By:main
Calls:push,pop
*/
void postfix()
{
int i,j=0;
for(i=0;inf[i]!=‘0‘;i++)
{
switch(inf[i])
{
case ‗+‘ : while(st[top] > = 1)
                   post[j++] = pop();
             push(1)
             break;
case ‗–‘ : while(st[top] >=1)
                   post[j++] = pop();
             push(2);
             break;
case ‗*‘ : while(st[top] >=3)
                   pos[j++] = pop();
             push(3)
             break;
case ‗/‘ : while(st[top] > = 3)
                   post[j++] = pop();
             push(4);
             break;
case ‗^‘ : while(st[top] >=4)
                   post[j++] = pop();
              push(5);
              break;
    case ‗(‗ : push(0);
              break;
    case ‗)‘ : while(st[top] ! = 0
                   post[j++] = pop();
              top —;
              break;
    default : post[j++] = inf[i];
    }
    }
while(top>0)
post[j++] = pop();
print(―ntPostfix expression is = > nntt %s‖, post);
}
/*
  The push Function
  Input:ele-the element which is to be pushed onto the stack
  Output:none
  Called By:postfix
  Calls:none
*/
void push(int ele)
{
top++;
st[top] = ele;
}
/*
  The pop Function
  Input:none
  Output:e-the popped element
  Called By:postfix
  Calls:none
*/
char pop()
  {
       int el;
       char e;
       el = st[top];
       top—;
       switch(el)
       {
         case 1 : e = ‗+‘;
              break;
         case 2 : e = ‗–‘;
              break;
         case 3 : e = ‗*‘;
              break;
         case 4 : e = ‗/‘;
              break;
         case 5 : e = ‗^‘;
              break;
       }
       return(e);
}
/**************** end of program ********************/
4)C Program
/************************************************************
      Program for checking the well formedness of the parenthesis.
    *************************************************************/
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #define size 5

  /* stack structure*/
  struct stack {
              char s[size];
              int top;
             }st;

  /*
    The push Function
    Input:item which is to be pushed
    Output:none-simply pushes the item onto the stck
    Called By:main
    Calls:none
  */
  void push(char 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 stempty()
{
  if(st.top==-1)
    return 1;
  else
    return 0;
}
/*
  The pop Function
  Input:none
  Output:returns the item which is popped from the stack
  Called By:main
  Calls:none
*/
char pop()
{
  char item;
  item=st.s[st.top];
  st.top—;
  return(item);
}
/*
  The main Function
  Input:none
  Output:none
  Called By:O.S.
  Calls:push,pop,stempty
*/
void main(void)
{
  char item;
  char ans,bracket[10];
  int i;
  st.top=-1;
  clrscr();
  printf(―ntt Enter The expression and put $ at the end‖);
  scanf(―%s‖,bracket);
  i=0;
  if(bracket[i]==‘)‘)
    printf(―n The expression is invalid‖);
  else
  {
     do
     {
while(bracket[i]==‘(‗)
        {
          push(bracket[i]);
          i++;
        }
        while(bracket[i]==‘)‘)
        {
           item=pop();
           i++;
        }
   }while(bracket[i]!=‘$‘);
   if(!stempty())
     printf(―n The expression is invalid‖);
   else
     printf(―n The expression has well formed parenthesis‖);
   }
   getch();
   }
5)C Program
/*************************************************************
     Program for converting decimal number to binary number
   *************************************************************/
   #include<stdio.h>
   #include<conio.h>
   #include<stdlib.h>
   #define size 5

  /* stack structure*/
  struct stack {
              int s[size];
              int top;
             }st;

  /*
    The push Function
    Input:item which is to be pushed
    Output:none-simply pushes the item onto the stck
    Called By:main
    Calls:none
  */
  void 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 stempty()
  {
if(st.top==-1)
    return 1;
   else
    return 0;
   }
   /*
     The pop Function
     Input:none
     Output:returns the item which is popped from the stack
     Called By:main
     Calls:none
   */
   int pop()
   {
     int item;
     item=st.s[st.top];
     st.top—;
     return(item);
   }
   /*
     The main Function
     Input:none
     Output:none
     Called By:O.S.
     Calls:push,pop,stempty
   */
   void main(void)
   {
     int item,i,num;
     st.top=-1;
     clrscr();
     printf(―n Program For Decimal TO Binary Conversion‖);
     printf(―ntt Enter The number‖);
     scanf(―%d‖,&num);
     while(num>=1)
       {
        item=num%2;
        push(item);
        num=num/2
       }
     while(!stempty())
     printf("%d",pop());
     getch();
     }
 6)C Program
/*************************************************************
  Program for reversing the given string using stack
*************************************************************/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#define size 10
/* stack structure*/
struct stack {
             char s[size];
             int top;
            }st;

/*
  The push Function
  Input:item which is to be pushed
  Output:none-simply pushes the item onto the stck
  Called By:main
  Calls:none
*/
void push(char 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 stempty()
{
  if(st.top==-1)
   return 1;
  else
   return 0;
}
/*
  The pop Function
  Input:none
  Output:returns the item which is popped from the stack
  Called By:main
  Calls:none
*/
char pop()
{
  char item;
  item=st.s[st.top];
  st.top—;
  return(item);
}
/*
  The main Function
  Input:none
  Output:none
  Called By:O.S.
  Calls:push,pop,stempty
*/
void main(void)
{
  char item,string[10];
  int i;
  st.top=-1;
  clrscr();
  printf(―n Program For reversing a given string‖);
  printf(―ntt Enter The string:‖);
  scanf(―%s‖,&string);
  i=0;
  while(string[i]!=‘0‘)
    {
     push(string[i]);
     i++;
    }
printf(―ttt‖);
  while(!stempty())
  {
    item=pop();
    printf(―%c‖,item);
  }
  getch();
}

7)‘C’ Program
/*************************************************************
Program to implement multiple stacks using single array
*************************************************************/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define MAX 20
int stack[MAX];
int size[MAX],lb,ub;
/* set_stack Function
  It is for defining the upper limit and lower limit of each stack
  Input:the index,which indicates the stack number
  Output:none,It sets the upper and lower boundries of the stack
  Called By:stempty,stfull,display,display_all
  Calls:none
  Parameter passing method:By value
*/
void set_stack(int index)
{
  int sum,i;
  if(index==1)
  {
    lb=1;
    ub=size[index];
  }
  else
  {
    sum=0;
    for(i=1;i<index;i++)
     sum=sum+size[i];
lb=sum+1;
  ub=sum+size[index];
  }
}
/* stfull Function
It checks whether the stack is full or not
  Input:the index,which indicates the stack number
  Output:1 if stack is full otherwise 0
  Called By:main
  Calls:set_stack
  Parameter passing method:By value
*/
int stfull(int index)
{
  int top,i,sum;
  set_stack(index);
  for(top=lb;top<=ub;top++)
  {
     if(stack[top]==-1)
        break;
    }
    if(top-1==ub)
     return 1;
    else
     return 0;
}
/* stempty Function
It checks whether the stack is empty or not
  Input:the index,which indicates the stack number
  Output:1 if stack is empty otherwise 0
  Called By:main
  Calls:set_stack
  Parameter passing method:By value
*/
int stempty(int index)
{
  int top;
  set_stack(index);
  for(top=lb;top<=ub;top++)
    {
     if(stack[top]!=-1)
        return 0;
     return 1;
    }
}
/* push Function
  Input:the item which is to be pushed onto the stack
  Output:none
  Called By:main
  Calls:
  Parameter passing method:By value
*/
void push(int item)
{
int top;
 for(top=lb;top<=ub;top++)
  if(stack[top]==-1)
   break;
  stack[top]=item;
 return;
}
/* pop Function
It pops the element from desired stack
  Input:none
  Output:item,popped element
  Called By:main
  Calls:none
*/
int pop()
{
    int top,item;;
    for(top=lb;top<=ub;top++)
     if(stack[top]==-1)
     break;
     top—;
     item=stack[top];
     stack[top]=-1;
     return item;
}
/* display Function
  It displays only desired stack
  Input:the index,which indicates the stack number
  Output:none
  Called By: main
  Calls:set_stack
  Parameter passing method:By value
*/
void display(int index)
{
    int top;
    set_stack(index);
  for(top=lb;top<=ub;top++)
  {
    if(stack[top]!=-1)
     printf(―%d‖,stack[top]);
  }
}

/* display_all Function
  It displays all the stacks in the array
  Input:the n,which indicates total number of stacks
  Output:none
  Called By:main
  Calls:set_stack
  Parameter passing method:By value
*/void display_all(int n)
{
  int top,index;
for(index=1;index<=n;index++)
 {
   printf(―nstack number %d is‖,index);
   set_stack(index);
   for(top=lb;top<=ub;top++)
   {
   if(stack[top]!=-1)
    printf(― %d‖,stack[top]);
   }
 }
}
/* main Function
  Input:none
  Output:none
  Called By:O.S.
  Calls:stfull,push,stempty,pop,display,display_all
  Parameter passing method:
*/
void main(void)
{
  int n,index,i,item,choice;
  char ans;
  clrscr();
  ans=‘y‘;
  for(i=1;i<=MAX;i++)
    stack[i]=-1;/*for initialization of the entire array of stacks*/
  printf(―nt Program For multiple stacks using single array‖);
  printf(―n Enter how many stacks are there‖);
  scanf(―%d‖,&n);
  printf(―n Enter the size for each stack‖);
  for(i=1;i<=n;i++)
  {
     printf(―n size for stack %d is‖,i);
     scanf(― %d‖,&size[i]);
  }
  do
    {
    printf(―ntt Main Menu‖);
    printf(―n 1.Push n2.Pop n3.Display n4.Dispaly all‖);
    printf(―n Enter Your choice‖);
    scanf(―%d‖,&choice);
    switch(choice)
    {
     case 1:printf(―n Enter the item to be pushed‖);
               scanf(―%d‖,&item);
               printf(―n In Which stack?‖);
               scanf(―%d‖,&index);
               if(stfull(index))
                printf(―n Stack %d is Full,can not Push‖,index);
               else
                push(item);
               break;
     case 2:printf(―n From Which stack?‖);
               scanf(―%d‖,&index);
if(stempty(index))
               printf(―n Stack number %d is empty!‖,index);
             else
               {
                  item=pop();
                  printf(―n %d is popped from stack %d‖,item,index);
               }
             break;
   case 3:printf(―n Which stack has to be displayed?‖);
             scanf(―%d‖,&index);
             display(index);
             break;
   case 4:display_all(n);
             break;
   default:printf(―n Exitting‖);
  }
  printf(―n Do you wish to continue?‖);
  ans=getch();
  }while(ans==‘y‘||ans==‘Y‘);
  getch();
 }
/********************* End Of Program**********************/
8)C Program

/*******************************************************************************************
Program for finding out the factorial for any given number.
*************************************************************/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
/* The fact function
Input:the numer n
Output: factorial of n
Called By:main
Calls:itself
*/
int fact(int n)
{
  int x,y;
  if(n<0)
  {
    printf(―The negative parameter in the factorial function‖);
    exit(0);
    }
    if(n==0)
    return 1;
    x=n-1;
    y=fact(x);
    return(n*y);
  }
/* The main function
Input:none
Output:none
Called By:O.S.
Calls:fact
*/
void main(void)
  {
    int n,f;
    clrscr();
    printf(―ntt Program For finding the factorial of n‖);
    printf(―nn Enter the number for finding the factorial‖);
    scanf(―%d‖,&n);
    f=fact(n);
    printf(―n the factorial of %d is %d‖,n,f);
    getch();
  }
/********************** End Of Program **********************/
9)C Program
/*************************************************************
Program for computing the number in the fibonacci series at
certain location.For e.g.the sixth number in fibonacci series
will be 8.The fibonacci series is 1 1 2 3 5 8 13 21 34...
*************************************************************/
/*header files*/
#include<stdio.h>
#include<conio.h>
/*
  The fib Function.
  Input:the location n.
  Output:the value at that location in fibonacci series.
  Called By:main.
  Calls:itself.
*/
int fib(int n)
{
  int x,y;
  if(n<=1)
    return n;
  x=fib(n-1);
  y=fib(n-2);
    return (x+y);
}
/*
  The main function
  Input:none
  Output:none
  Called By:o.s
  Calls:fib-the fibonacci function.
*/
void main(void)
{
  int n,num;
  clrscr();
  printf(―n Enter location in fibonacci series‖);
  scanf(―%d‖,&n);
  num=fib(n);
  printf(―n The number at %dth position is %d in fibonacci
series‖,n,num);
 getch();
}
/********************** End of Program ***********************/
10)C Program
/*************************************************************
Program for Multiplication Of natural numbers.The multiplication
two numbers is considerd.This is program uses the recurssive
definition.
*************************************************************/
/*header files*/
#include<stdio.h>
#include<conio.h>
/*************************************************************
mul Function
Input:two numbers a,b
Output:returns the multiplication result
Called by:main
Calls:mul i.e.itself
*************************************************************/
mul(int a,int b)
{
    if(b==1)
    return a;
    else
     return(mul(a,b-1)+ a);
}
/*************************************************************
main Function
Input:none
Output:none
Called by:O.S.
Calls:mul
*************************************************************/
main()
{
    int a,b,result=0;
    clrscr();
    printf(―n Enter the values of a and b‖);
    scanf(―%d%d‖,&a,&b);
    result=mul(a,b);
    printf(―The multiplication is =%d‖,result);
    getch();
  }
11)C Program
/*************************************************************
Program to find out the greatest common divisor of the two
integers.
*************************************************************/
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int gcd(int a,int b)
{
int temp,ans;
 if(b<=a &&a%b ==0)
   return b;
 else
 {
   if(b<a)
   {
    temp = a;
    a = b;          /*interchanging the a and b values*/
    b = temp;
   }
   ans = a%b;
   return(gcd(b,ans));
 }
}
void main(void)
{
  int a,b,ans;
  clrscr();
  printf(―ntt GCD Of two integers‖);
  printf(―nn Enter the two numbers‖);
  scanf(―%d %d‖,&a,&b);
  ans=gcd(a,b);
  printf(―n The gcd of %d and %d is = %d‖,a,b,ans);
  getch();
}
/********************** End of program *******************/
12)C Program
/*******************************************************************
Conversion of postfix expression to infix form
*******************************************************************/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<process.h>

typedef struct node
{
  char str[25];
}node;

node stack[20];
int top = –1;
char input[100];
void post2in();

void push(char *op)
{
  if(top == 20)
  {
       printf("nStack full");
       exit(0);
  }
  top++;
strcpy(stack[top].str,op);
}

char *pop()
{
  char *op;
  op=(char *)malloc(25);
  if(top==–1)
  {
       printf("ntlllegal expression : operand missing");
       exit(0);
  }
  strcpy(op,stack[top].str);
  top--;
  return(op);
}

void main()
{
  clrscr();
  printf("ntt Program for postfix to infix conversion");
  printf("ntEnter postfix expression ::nntt);
  scanf("%s",input);
  post2in();
  getch();
}

void post2in()
{
  char*op1,*op2,op[25];
  int i=0;

 while(input[i]!='0')
 {
      if(input[i]!='+'&& input[i]!='–'&& input[i]!='*'&&
      input[i]!='/')
      {
            op[0]=input[i];
            op[1]='0';
            push(op);
      }
      else
      {
            op2=pop();
            op1=pop();
            sprintf(op,"(%s%c%s)",op1,input[i],op2);
            free(op1);
            free(op2);
            push(op);
      }
      i++;
 }
 if(top==0)
 {
print("ntinfix expression is::nntt%s",
                stack[0].str);
 }
 else
 {
        print("ntlllegal input expression:operator
                missingn");
  }
}
13)C Program
/*******************************************************************
Conversion of postfix expression to prefix form
*******************************************************************/

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<process.h>

typedef struct node
{
  char str[25];
}node;

node stack[20];
int top = –1;
char input[100];
void post2pre();

void push(char *op)
{
  if(top == 20)
  {
       printf("nStack full");
       exit(0);
  }
  top++;
strcpy(stack[top].str,op);
}

char *pop()
{
  char *op;
  op=(char *)malloc(25);
  if(top==–1)
  {
       printf("ntlllegal expression : operand missing");
       exit(0);
  }
  strcpy(op,stack[top].str);
  top--;
  return(op);
}
void main()
{
  clrscr();
  printf("ntt Program for postfix to prefix form");
  printf("ntEnter postfix expression ::nntt);
  scanf("%s",input);
  post2pre();
  getch();
}

void post2pre()
{
  char*op1,*op2,op[25];
  int i=0;

    while(input[i]!='0')
    {
         if(input[i]!='+'&& input[i]!='–'&& input[i]!='*'&&
         input[i]!='/')
         {
               op[0]=input[i];
               op[1]='0';
               push(op);
         }
         else
         {
               op2=pop();
               op1=pop();
               sprintf(op,"(%c%s%s)",input[i],op1,op2);
               free(op1);
               free(op2);
               push(op);
         }
         i++;
    }
    if(top==0)
    {
         print("ntPrefix expression is::nntt%s",
                 stack[0].str);
    }
    else
    {
         print("ntlllegal input expression:operator
                 missingn");
    }
}

Weitere ähnliche Inhalte

Was ist angesagt?

Stack using Linked List
Stack using Linked ListStack using Linked List
Stack using Linked ListSayantan Sur
 
Data structure circular list
Data structure circular listData structure circular list
Data structure circular listiCreateWorld
 
[FT-11][suhorng] “Poor Man's” Undergraduate Compilers
[FT-11][suhorng] “Poor Man's” Undergraduate Compilers[FT-11][suhorng] “Poor Man's” Undergraduate Compilers
[FT-11][suhorng] “Poor Man's” Undergraduate CompilersFunctional Thursday
 
Data structures stacks
Data structures   stacksData structures   stacks
Data structures stacksmaamir farooq
 
C Language - Switch and For Loop
C Language - Switch and For LoopC Language - Switch and For Loop
C Language - Switch and For LoopSukrit Gupta
 
Codemania101: The Present, Past and Future of Asynchronous Programming in Python
Codemania101: The Present, Past and Future of Asynchronous Programming in PythonCodemania101: The Present, Past and Future of Asynchronous Programming in Python
Codemania101: The Present, Past and Future of Asynchronous Programming in PythonYothin Muangsommuk
 
Intro to c programming
Intro to c programmingIntro to c programming
Intro to c programmingPrabhu Govind
 
StackArray stack3
StackArray stack3StackArray stack3
StackArray stack3Rajendran
 
35787646 system-software-lab-manual
35787646 system-software-lab-manual35787646 system-software-lab-manual
35787646 system-software-lab-manualNaveen Kumar
 
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’a
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’aTen Typ tak ma - O systemach typów na przykładzie TypeScript’a
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’aArtur Skowroński
 
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...Artur Skowroński
 
The Ring programming language version 1.6 book - Part 84 of 189
The Ring programming language version 1.6 book - Part 84 of 189The Ring programming language version 1.6 book - Part 84 of 189
The Ring programming language version 1.6 book - Part 84 of 189Mahmoud Samir Fayed
 
GeoGebra JavaScript CheatSheet
GeoGebra JavaScript CheatSheetGeoGebra JavaScript CheatSheet
GeoGebra JavaScript CheatSheetJose Perez
 

Was ist angesagt? (20)

Stack using Linked List
Stack using Linked ListStack using Linked List
Stack using Linked List
 
Data structure circular list
Data structure circular listData structure circular list
Data structure circular list
 
Decision Making and Looping
Decision Making and LoopingDecision Making and Looping
Decision Making and Looping
 
[FT-11][suhorng] “Poor Man's” Undergraduate Compilers
[FT-11][suhorng] “Poor Man's” Undergraduate Compilers[FT-11][suhorng] “Poor Man's” Undergraduate Compilers
[FT-11][suhorng] “Poor Man's” Undergraduate Compilers
 
SPL 8 | Loop Statements in C
SPL 8 | Loop Statements in CSPL 8 | Loop Statements in C
SPL 8 | Loop Statements in C
 
Stack using Array
Stack using ArrayStack using Array
Stack using Array
 
Data structures stacks
Data structures   stacksData structures   stacks
Data structures stacks
 
C Language - Switch and For Loop
C Language - Switch and For LoopC Language - Switch and For Loop
C Language - Switch and For Loop
 
5 Rmi Print
5  Rmi Print5  Rmi Print
5 Rmi Print
 
Codemania101: The Present, Past and Future of Asynchronous Programming in Python
Codemania101: The Present, Past and Future of Asynchronous Programming in PythonCodemania101: The Present, Past and Future of Asynchronous Programming in Python
Codemania101: The Present, Past and Future of Asynchronous Programming in Python
 
C++ control loops
C++ control loopsC++ control loops
C++ control loops
 
Intro to c programming
Intro to c programmingIntro to c programming
Intro to c programming
 
StackArray stack3
StackArray stack3StackArray stack3
StackArray stack3
 
35787646 system-software-lab-manual
35787646 system-software-lab-manual35787646 system-software-lab-manual
35787646 system-software-lab-manual
 
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’a
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’aTen Typ tak ma - O systemach typów na przykładzie TypeScript’a
Ten Typ tak ma - O systemach typów na przykładzie TypeScript’a
 
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...
Artur Skowroński – Ten Typ tak ma - O systemach typów na przykładzie TypeScri...
 
DataStructures notes
DataStructures notesDataStructures notes
DataStructures notes
 
The Ring programming language version 1.6 book - Part 84 of 189
The Ring programming language version 1.6 book - Part 84 of 189The Ring programming language version 1.6 book - Part 84 of 189
The Ring programming language version 1.6 book - Part 84 of 189
 
3. control statement
3. control statement3. control statement
3. control statement
 
GeoGebra JavaScript CheatSheet
GeoGebra JavaScript CheatSheetGeoGebra JavaScript CheatSheet
GeoGebra JavaScript CheatSheet
 

Ähnlich wie Stack prgs

Paradigmas de Linguagens de Programacao - Aula #4
Paradigmas de Linguagens de Programacao - Aula #4Paradigmas de Linguagens de Programacao - Aula #4
Paradigmas de Linguagens de Programacao - Aula #4Ismar Silveira
 
C++: Constructor, Copy Constructor and Assignment operator
C++: Constructor, Copy Constructor and Assignment operatorC++: Constructor, Copy Constructor and Assignment operator
C++: Constructor, Copy Constructor and Assignment operatorJussi Pohjolainen
 
java compilerCompiler1.javajava compilerCompiler1.javaimport.docx
java compilerCompiler1.javajava compilerCompiler1.javaimport.docxjava compilerCompiler1.javajava compilerCompiler1.javaimport.docx
java compilerCompiler1.javajava compilerCompiler1.javaimport.docxpriestmanmable
 
Data structuresUsing java language and develop a prot.pdf
Data structuresUsing java language and develop a prot.pdfData structuresUsing java language and develop a prot.pdf
Data structuresUsing java language and develop a prot.pdfarmyshoes
 
Datastructures asignment
Datastructures asignmentDatastructures asignment
Datastructures asignmentsreekanth3dce
 
java write a program to evaluate the postfix expressionthe program.pdf
java write a program to evaluate the postfix expressionthe program.pdfjava write a program to evaluate the postfix expressionthe program.pdf
java write a program to evaluate the postfix expressionthe program.pdfarjuntelecom26
 
operating system ubuntu,linux,MacProgram will work only if you g.pdf
operating system ubuntu,linux,MacProgram will work only if you g.pdfoperating system ubuntu,linux,MacProgram will work only if you g.pdf
operating system ubuntu,linux,MacProgram will work only if you g.pdfaptcomputerzone
 
#C programming Question 35Implement the functions required for the.docx
#C programming Question 35Implement the functions required for the.docx#C programming Question 35Implement the functions required for the.docx
#C programming Question 35Implement the functions required for the.docxajoy21
 
#includeiostream#includestdlib.husing namespace std;class .pdf
#includeiostream#includestdlib.husing namespace std;class .pdf#includeiostream#includestdlib.husing namespace std;class .pdf
#includeiostream#includestdlib.husing namespace std;class .pdfasif1401
 
Data structure lab manual
Data structure lab manualData structure lab manual
Data structure lab manualnikshaikh786
 
12 lec 12 loop
12 lec 12 loop 12 lec 12 loop
12 lec 12 loop kapil078
 

Ähnlich wie Stack prgs (20)

week-17x
week-17xweek-17x
week-17x
 
week-18x
week-18xweek-18x
week-18x
 
Paradigmas de Linguagens de Programacao - Aula #4
Paradigmas de Linguagens de Programacao - Aula #4Paradigmas de Linguagens de Programacao - Aula #4
Paradigmas de Linguagens de Programacao - Aula #4
 
Stack Data Structure
Stack Data StructureStack Data Structure
Stack Data Structure
 
C++: Constructor, Copy Constructor and Assignment operator
C++: Constructor, Copy Constructor and Assignment operatorC++: Constructor, Copy Constructor and Assignment operator
C++: Constructor, Copy Constructor and Assignment operator
 
java compilerCompiler1.javajava compilerCompiler1.javaimport.docx
java compilerCompiler1.javajava compilerCompiler1.javaimport.docxjava compilerCompiler1.javajava compilerCompiler1.javaimport.docx
java compilerCompiler1.javajava compilerCompiler1.javaimport.docx
 
Data structuresUsing java language and develop a prot.pdf
Data structuresUsing java language and develop a prot.pdfData structuresUsing java language and develop a prot.pdf
Data structuresUsing java language and develop a prot.pdf
 
week-16x
week-16xweek-16x
week-16x
 
STACK1.docx
STACK1.docxSTACK1.docx
STACK1.docx
 
About Go
About GoAbout Go
About Go
 
Datastructures asignment
Datastructures asignmentDatastructures asignment
Datastructures asignment
 
java write a program to evaluate the postfix expressionthe program.pdf
java write a program to evaluate the postfix expressionthe program.pdfjava write a program to evaluate the postfix expressionthe program.pdf
java write a program to evaluate the postfix expressionthe program.pdf
 
Stack of Data structure
Stack of Data structureStack of Data structure
Stack of Data structure
 
stack.pptx
stack.pptxstack.pptx
stack.pptx
 
operating system ubuntu,linux,MacProgram will work only if you g.pdf
operating system ubuntu,linux,MacProgram will work only if you g.pdfoperating system ubuntu,linux,MacProgram will work only if you g.pdf
operating system ubuntu,linux,MacProgram will work only if you g.pdf
 
#C programming Question 35Implement the functions required for the.docx
#C programming Question 35Implement the functions required for the.docx#C programming Question 35Implement the functions required for the.docx
#C programming Question 35Implement the functions required for the.docx
 
#includeiostream#includestdlib.husing namespace std;class .pdf
#includeiostream#includestdlib.husing namespace std;class .pdf#includeiostream#includestdlib.husing namespace std;class .pdf
#includeiostream#includestdlib.husing namespace std;class .pdf
 
Data structure lab manual
Data structure lab manualData structure lab manual
Data structure lab manual
 
12 lec 12 loop
12 lec 12 loop 12 lec 12 loop
12 lec 12 loop
 
Tu1
Tu1Tu1
Tu1
 

Mehr von Ssankett Negi

Mehr von Ssankett Negi (9)

Binary tree
Binary treeBinary tree
Binary tree
 
Multi way&btree
Multi way&btreeMulti way&btree
Multi way&btree
 
Heapsort
HeapsortHeapsort
Heapsort
 
Binary trees
Binary treesBinary trees
Binary trees
 
Threaded binarytree&heapsort
Threaded binarytree&heapsortThreaded binarytree&heapsort
Threaded binarytree&heapsort
 
U3.stack queue
U3.stack queueU3.stack queue
U3.stack queue
 
Recursion
RecursionRecursion
Recursion
 
Circular queues
Circular queuesCircular queues
Circular queues
 
U2.linked list
U2.linked listU2.linked list
U2.linked list
 

Kürzlich hochgeladen

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 

Kürzlich hochgeladen (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Stack prgs

  • 1. 1)‘C’ Program /************************************************************ Program for implementing a stack using arrays.It involves various operations such as push,pop,stack empty,stack full and display. *************************************************************/ #include<stdio.h> #include<conio.h> #include<stdlib.h> #define size 5 /* stack structure*/ struct stack { int s[size]; int top; }st; /* The stfull Function Input:none Output:returns 1 or 0 for stack full or not Called By:main Calls:none */ int stfull() { if(st.top>=size-1) return 1; else return 0; } /* The push Function Input:item which is to be pushed Output:none-simply pushes the item onto the stck Called By:main Calls:none */ void 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 stempty() { if(st.top==-1) return 1; else return 0;
  • 2. } /* The pop Function Input:none Output:returns the item which is popped from the stack Called By:main Calls:none */ int pop() { int item; item=st.s[st.top]; st.top – –; return(item); } /* The display Function Input:none Output:none-displys the contents of the stack Called By:main Calls:none */ void display() { int i; if(stempty()) printf(―n Stack Is Empty!‖); else { for(i=st.top;i>=0;i– –) printf(―n%d‖,st.s[i]); } } /* The main Function Input:none Output:none Called By:O.S. Calls:push,pop,stempty,stfull,display */ void main(void) { int item,choice; char ans; st.top=-1; clrscr(); printf(―ntt Implementation Of Stack‖); do { printf(―n Main Menu‖); printf(―n1.Pushn2.Popn3.Displayn4.exit‖); printf(―n Enter Your Choice‖); scanf(―%d‖,&choice); switch(choice)
  • 3. { case 1:printf(―n Enter The item to be pushed‖); scanf(―%d‖,&item); if(stfull()) printf(―n Stack is Full!‖); else push(item); break; case 2:if(stempty()) printf(―n Empty stack!Underflow !!‖); else { item=pop(); printf(―n The popped element is %d‖,item); } break; case 3:display(); break; case 4:exit(0); } printf(―n Do You want To Continue?‖); ans=getche(); }while(ans ==‘Y‘ ||ans ==‘y‘); getch(); } /******************** End Of Program ************************/ 2)‘C’ Program /************************************************************ Program to evaluate a given postfix expression. The program handles postfix expressions with only binary arithmatic operators +,-,*,/ and ^. Operands are single digit numbers between 0-9. *************************************************************/ /* List of include files */ #include <stdio.h> #include <conio.h> #include <process.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <math.h> /* List of defined constants */ #define size 80 /* Global declarations */ struct stack { double s[size]; int top; }st; enum Type { operand, oprtor }; /* The Push function Input : A value to be pushed on global stack Output: None, modifies global stack and its top Parameter Passing Method :By Value Called By : Post()
  • 4. Calls :none */ void Push(double Val) { if ( st.top+1 >= size ) printf(―Error: Stack is Fulln‖); st.top++; st.s[st.top] = Val; } /* The Pop function Input : None, uses global stack and top Output: Returns the value on top of stack Parameter Passing Method :None Called By : post() Calls :none */ double Pop() { double Val; if ( st.top == -1 ) printf(―Error: Stack is Emptyn‖); Val = st.s[st.top]; st.top—; return(Val); } /* The gettokn function Input : Given infix expression Output: Returns the next character from the expression Parameter Passing Method : By reference Called By : post() Calls : None */ char gettokn( char exp[]) { static int i = 0; char ch; ch = exp[i]; i++; return ch; } /* The Gettype function Input : A character from infix expression Output: Returns the token type as operand or oprtor Parameter Passing Method : By value Called by : post() Calls : none */ enum Type Gettype(char ch) { ch = toupper(ch); /* convert to upper case */ if ( ch >= ‗0‘ && ch <= ‗9‘) return operand; if ( ch == ‗+‘|| ch == ‗-‘|| ch == ‗*‘|| ch == ‗/‘ ||
  • 5. ch == ‗^‘ ) return oprtor; /* Error */ printf(―Invalid operatorn‖); } /* The post function which contains major logic of the program. Input : A post Expression of single digit operand Output: Resultant value after evaluating the expression Parameter Passing Method :by reference Called By : main() Calls :gettoken(), Push(), Pop() and Gettype() */ double post( char exp[]) { char ch,type; double result, Val, Op1, Op2; st.top = 0; ch = gettokn(exp); while ( ch != ‗$‘ ) { type = Gettype(ch); if( type ==operand) { Val = ch - 48; Push( Val); } else if ( type == oprtor) { Op2 = Pop(); Op1 = 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 */ Push (result); } ch = gettokn(exp); }/* while */ result = Pop(); return(result); } /* The main function
  • 6. Input : None Output : None Parameter Passing Method : None called By : OS Calls : post() */ void main () { /* Local declarations */ char exp[size]; int len; double Result; clrscr(); printf(―‖Enter the postfix Expressionn"); scanf(―%S‖,exp); len = strlen(exp); exp[len] = ‗‘; /* Append at the end */ Result = post(exp); printf(―The Value of the expression is %fn‖, Result); getch(); exit(0); } / ************** End of the Program ***************** / 3) ‘C’ Program / ********************************************************** Program for conversion of Infix expression to Postfix form. ************************************************************/ #include<stdio.h> #include<conio.h> #include<alloc.h> char inf[40],post[40]; int top=0,st[20]; void postfix(); void push(int); char pop(); /* The main Function Input:none Output:none Called BY:O.S. Calls:postfix */ void main(void) { clrscr(); printf(―ntEnter the infix expression :: nntt‖); scanf(―%s‖, inf); postfix(); getch(); } /* The postfix Function Input:none Output:none
  • 7. Called By:main Calls:push,pop */ void postfix() { int i,j=0; for(i=0;inf[i]!=‘0‘;i++) { switch(inf[i]) { case ‗+‘ : while(st[top] > = 1) post[j++] = pop(); push(1) break; case ‗–‘ : while(st[top] >=1) post[j++] = pop(); push(2); break; case ‗*‘ : while(st[top] >=3) pos[j++] = pop(); push(3) break; case ‗/‘ : while(st[top] > = 3) post[j++] = pop(); push(4); break; case ‗^‘ : while(st[top] >=4) post[j++] = pop(); push(5); break; case ‗(‗ : push(0); break; case ‗)‘ : while(st[top] ! = 0 post[j++] = pop(); top —; break; default : post[j++] = inf[i]; } } while(top>0) post[j++] = pop(); print(―ntPostfix expression is = > nntt %s‖, post); } /* The push Function Input:ele-the element which is to be pushed onto the stack Output:none Called By:postfix Calls:none */ void push(int ele) { top++; st[top] = ele;
  • 8. } /* The pop Function Input:none Output:e-the popped element Called By:postfix Calls:none */ char pop() { int el; char e; el = st[top]; top—; switch(el) { case 1 : e = ‗+‘; break; case 2 : e = ‗–‘; break; case 3 : e = ‗*‘; break; case 4 : e = ‗/‘; break; case 5 : e = ‗^‘; break; } return(e); } /**************** end of program ********************/ 4)C Program /************************************************************ Program for checking the well formedness of the parenthesis. *************************************************************/ #include<stdio.h> #include<conio.h> #include<stdlib.h> #define size 5 /* stack structure*/ struct stack { char s[size]; int top; }st; /* The push Function Input:item which is to be pushed Output:none-simply pushes the item onto the stck Called By:main Calls:none */ void push(char item) {
  • 9. 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 stempty() { if(st.top==-1) return 1; else return 0; } /* The pop Function Input:none Output:returns the item which is popped from the stack Called By:main Calls:none */ char pop() { char item; item=st.s[st.top]; st.top—; return(item); } /* The main Function Input:none Output:none Called By:O.S. Calls:push,pop,stempty */ void main(void) { char item; char ans,bracket[10]; int i; st.top=-1; clrscr(); printf(―ntt Enter The expression and put $ at the end‖); scanf(―%s‖,bracket); i=0; if(bracket[i]==‘)‘) printf(―n The expression is invalid‖); else { do {
  • 10. while(bracket[i]==‘(‗) { push(bracket[i]); i++; } while(bracket[i]==‘)‘) { item=pop(); i++; } }while(bracket[i]!=‘$‘); if(!stempty()) printf(―n The expression is invalid‖); else printf(―n The expression has well formed parenthesis‖); } getch(); } 5)C Program /************************************************************* Program for converting decimal number to binary number *************************************************************/ #include<stdio.h> #include<conio.h> #include<stdlib.h> #define size 5 /* stack structure*/ struct stack { int s[size]; int top; }st; /* The push Function Input:item which is to be pushed Output:none-simply pushes the item onto the stck Called By:main Calls:none */ void 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 stempty() {
  • 11. if(st.top==-1) return 1; else return 0; } /* The pop Function Input:none Output:returns the item which is popped from the stack Called By:main Calls:none */ int pop() { int item; item=st.s[st.top]; st.top—; return(item); } /* The main Function Input:none Output:none Called By:O.S. Calls:push,pop,stempty */ void main(void) { int item,i,num; st.top=-1; clrscr(); printf(―n Program For Decimal TO Binary Conversion‖); printf(―ntt Enter The number‖); scanf(―%d‖,&num); while(num>=1) { item=num%2; push(item); num=num/2 } while(!stempty()) printf("%d",pop()); getch(); } 6)C Program /************************************************************* Program for reversing the given string using stack *************************************************************/ #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<string.h> #define size 10
  • 12. /* stack structure*/ struct stack { char s[size]; int top; }st; /* The push Function Input:item which is to be pushed Output:none-simply pushes the item onto the stck Called By:main Calls:none */ void push(char 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 stempty() { if(st.top==-1) return 1; else return 0; } /* The pop Function Input:none Output:returns the item which is popped from the stack Called By:main Calls:none */ char pop() { char item; item=st.s[st.top]; st.top—; return(item); } /* The main Function Input:none Output:none Called By:O.S. Calls:push,pop,stempty */ void main(void)
  • 13. { char item,string[10]; int i; st.top=-1; clrscr(); printf(―n Program For reversing a given string‖); printf(―ntt Enter The string:‖); scanf(―%s‖,&string); i=0; while(string[i]!=‘0‘) { push(string[i]); i++; } printf(―ttt‖); while(!stempty()) { item=pop(); printf(―%c‖,item); } getch(); } 7)‘C’ Program /************************************************************* Program to implement multiple stacks using single array *************************************************************/ #include<stdio.h> #include<conio.h> #include<stdlib.h> #define MAX 20 int stack[MAX]; int size[MAX],lb,ub; /* set_stack Function It is for defining the upper limit and lower limit of each stack Input:the index,which indicates the stack number Output:none,It sets the upper and lower boundries of the stack Called By:stempty,stfull,display,display_all Calls:none Parameter passing method:By value */ void set_stack(int index) { int sum,i; if(index==1) { lb=1; ub=size[index]; } else { sum=0; for(i=1;i<index;i++) sum=sum+size[i];
  • 14. lb=sum+1; ub=sum+size[index]; } } /* stfull Function It checks whether the stack is full or not Input:the index,which indicates the stack number Output:1 if stack is full otherwise 0 Called By:main Calls:set_stack Parameter passing method:By value */ int stfull(int index) { int top,i,sum; set_stack(index); for(top=lb;top<=ub;top++) { if(stack[top]==-1) break; } if(top-1==ub) return 1; else return 0; } /* stempty Function It checks whether the stack is empty or not Input:the index,which indicates the stack number Output:1 if stack is empty otherwise 0 Called By:main Calls:set_stack Parameter passing method:By value */ int stempty(int index) { int top; set_stack(index); for(top=lb;top<=ub;top++) { if(stack[top]!=-1) return 0; return 1; } } /* push Function Input:the item which is to be pushed onto the stack Output:none Called By:main Calls: Parameter passing method:By value */ void push(int item) {
  • 15. int top; for(top=lb;top<=ub;top++) if(stack[top]==-1) break; stack[top]=item; return; } /* pop Function It pops the element from desired stack Input:none Output:item,popped element Called By:main Calls:none */ int pop() { int top,item;; for(top=lb;top<=ub;top++) if(stack[top]==-1) break; top—; item=stack[top]; stack[top]=-1; return item; } /* display Function It displays only desired stack Input:the index,which indicates the stack number Output:none Called By: main Calls:set_stack Parameter passing method:By value */ void display(int index) { int top; set_stack(index); for(top=lb;top<=ub;top++) { if(stack[top]!=-1) printf(―%d‖,stack[top]); } } /* display_all Function It displays all the stacks in the array Input:the n,which indicates total number of stacks Output:none Called By:main Calls:set_stack Parameter passing method:By value */void display_all(int n) { int top,index;
  • 16. for(index=1;index<=n;index++) { printf(―nstack number %d is‖,index); set_stack(index); for(top=lb;top<=ub;top++) { if(stack[top]!=-1) printf(― %d‖,stack[top]); } } } /* main Function Input:none Output:none Called By:O.S. Calls:stfull,push,stempty,pop,display,display_all Parameter passing method: */ void main(void) { int n,index,i,item,choice; char ans; clrscr(); ans=‘y‘; for(i=1;i<=MAX;i++) stack[i]=-1;/*for initialization of the entire array of stacks*/ printf(―nt Program For multiple stacks using single array‖); printf(―n Enter how many stacks are there‖); scanf(―%d‖,&n); printf(―n Enter the size for each stack‖); for(i=1;i<=n;i++) { printf(―n size for stack %d is‖,i); scanf(― %d‖,&size[i]); } do { printf(―ntt Main Menu‖); printf(―n 1.Push n2.Pop n3.Display n4.Dispaly all‖); printf(―n Enter Your choice‖); scanf(―%d‖,&choice); switch(choice) { case 1:printf(―n Enter the item to be pushed‖); scanf(―%d‖,&item); printf(―n In Which stack?‖); scanf(―%d‖,&index); if(stfull(index)) printf(―n Stack %d is Full,can not Push‖,index); else push(item); break; case 2:printf(―n From Which stack?‖); scanf(―%d‖,&index);
  • 17. if(stempty(index)) printf(―n Stack number %d is empty!‖,index); else { item=pop(); printf(―n %d is popped from stack %d‖,item,index); } break; case 3:printf(―n Which stack has to be displayed?‖); scanf(―%d‖,&index); display(index); break; case 4:display_all(n); break; default:printf(―n Exitting‖); } printf(―n Do you wish to continue?‖); ans=getch(); }while(ans==‘y‘||ans==‘Y‘); getch(); } /********************* End Of Program**********************/ 8)C Program /******************************************************************************************* Program for finding out the factorial for any given number. *************************************************************/ #include<stdio.h> #include<stdlib.h> #include<conio.h> /* The fact function Input:the numer n Output: factorial of n Called By:main Calls:itself */ int fact(int n) { int x,y; if(n<0) { printf(―The negative parameter in the factorial function‖); exit(0); } if(n==0) return 1; x=n-1; y=fact(x); return(n*y); } /* The main function Input:none Output:none Called By:O.S.
  • 18. Calls:fact */ void main(void) { int n,f; clrscr(); printf(―ntt Program For finding the factorial of n‖); printf(―nn Enter the number for finding the factorial‖); scanf(―%d‖,&n); f=fact(n); printf(―n the factorial of %d is %d‖,n,f); getch(); } /********************** End Of Program **********************/ 9)C Program /************************************************************* Program for computing the number in the fibonacci series at certain location.For e.g.the sixth number in fibonacci series will be 8.The fibonacci series is 1 1 2 3 5 8 13 21 34... *************************************************************/ /*header files*/ #include<stdio.h> #include<conio.h> /* The fib Function. Input:the location n. Output:the value at that location in fibonacci series. Called By:main. Calls:itself. */ int fib(int n) { int x,y; if(n<=1) return n; x=fib(n-1); y=fib(n-2); return (x+y); } /* The main function Input:none Output:none Called By:o.s Calls:fib-the fibonacci function. */ void main(void) { int n,num; clrscr(); printf(―n Enter location in fibonacci series‖); scanf(―%d‖,&n); num=fib(n); printf(―n The number at %dth position is %d in fibonacci
  • 19. series‖,n,num); getch(); } /********************** End of Program ***********************/ 10)C Program /************************************************************* Program for Multiplication Of natural numbers.The multiplication two numbers is considerd.This is program uses the recurssive definition. *************************************************************/ /*header files*/ #include<stdio.h> #include<conio.h> /************************************************************* mul Function Input:two numbers a,b Output:returns the multiplication result Called by:main Calls:mul i.e.itself *************************************************************/ mul(int a,int b) { if(b==1) return a; else return(mul(a,b-1)+ a); } /************************************************************* main Function Input:none Output:none Called by:O.S. Calls:mul *************************************************************/ main() { int a,b,result=0; clrscr(); printf(―n Enter the values of a and b‖); scanf(―%d%d‖,&a,&b); result=mul(a,b); printf(―The multiplication is =%d‖,result); getch(); } 11)C Program /************************************************************* Program to find out the greatest common divisor of the two integers. *************************************************************/ #include<stdio.h> #include<conio.h> #include<stdlib.h> int gcd(int a,int b) {
  • 20. int temp,ans; if(b<=a &&a%b ==0) return b; else { if(b<a) { temp = a; a = b; /*interchanging the a and b values*/ b = temp; } ans = a%b; return(gcd(b,ans)); } } void main(void) { int a,b,ans; clrscr(); printf(―ntt GCD Of two integers‖); printf(―nn Enter the two numbers‖); scanf(―%d %d‖,&a,&b); ans=gcd(a,b); printf(―n The gcd of %d and %d is = %d‖,a,b,ans); getch(); } /********************** End of program *******************/ 12)C Program /******************************************************************* Conversion of postfix expression to infix form *******************************************************************/ #include<stdio.h> #include<conio.h> #include<string.h> #include<process.h> typedef struct node { char str[25]; }node; node stack[20]; int top = –1; char input[100]; void post2in(); void push(char *op) { if(top == 20) { printf("nStack full"); exit(0); } top++;
  • 21. strcpy(stack[top].str,op); } char *pop() { char *op; op=(char *)malloc(25); if(top==–1) { printf("ntlllegal expression : operand missing"); exit(0); } strcpy(op,stack[top].str); top--; return(op); } void main() { clrscr(); printf("ntt Program for postfix to infix conversion"); printf("ntEnter postfix expression ::nntt); scanf("%s",input); post2in(); getch(); } void post2in() { char*op1,*op2,op[25]; int i=0; while(input[i]!='0') { if(input[i]!='+'&& input[i]!='–'&& input[i]!='*'&& input[i]!='/') { op[0]=input[i]; op[1]='0'; push(op); } else { op2=pop(); op1=pop(); sprintf(op,"(%s%c%s)",op1,input[i],op2); free(op1); free(op2); push(op); } i++; } if(top==0) {
  • 22. print("ntinfix expression is::nntt%s", stack[0].str); } else { print("ntlllegal input expression:operator missingn"); } } 13)C Program /******************************************************************* Conversion of postfix expression to prefix form *******************************************************************/ #include<stdio.h> #include<conio.h> #include<string.h> #include<process.h> typedef struct node { char str[25]; }node; node stack[20]; int top = –1; char input[100]; void post2pre(); void push(char *op) { if(top == 20) { printf("nStack full"); exit(0); } top++; strcpy(stack[top].str,op); } char *pop() { char *op; op=(char *)malloc(25); if(top==–1) { printf("ntlllegal expression : operand missing"); exit(0); } strcpy(op,stack[top].str); top--; return(op); }
  • 23. void main() { clrscr(); printf("ntt Program for postfix to prefix form"); printf("ntEnter postfix expression ::nntt); scanf("%s",input); post2pre(); getch(); } void post2pre() { char*op1,*op2,op[25]; int i=0; while(input[i]!='0') { if(input[i]!='+'&& input[i]!='–'&& input[i]!='*'&& input[i]!='/') { op[0]=input[i]; op[1]='0'; push(op); } else { op2=pop(); op1=pop(); sprintf(op,"(%c%s%s)",input[i],op1,op2); free(op1); free(op2); push(op); } i++; } if(top==0) { print("ntPrefix expression is::nntt%s", stack[0].str); } else { print("ntlllegal input expression:operator missingn"); } }