Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

STACK USING ARRAY

#include<stdio.h>
#define SIZE 10
void push(int);
void pop();
void display();
int stack[SIZE], top = -1;
int main()
{
int value, choice;
while(1){
printf("\n\n***** MENU *****\n");
printf("1. Push\n2. Pop\n3. Display\n4.
Exit");
printf("\nEnter your choice: ");
scanf("%d",&choice);
switch(choice){
case 1: printf("Enter the value to be
insert: ");
scanf("%d",&value);
push(value);
break;
case 2: pop();
break;
case 3: display();
break;
case 4: exit(0);
default: printf("\nWrong selection!!! Try
again!!!");
}
}
}
void push(int value){
if(top == SIZE-1)
printf("\nStack is Full!!! Insertion is not
possible!!!");
else{
top++;
stack[top] = value;
printf("\nInsertion success!!!");
}
}
void pop(){
if(top == -1)
printf("\nStack is Empty!!! Deletion is
not possible!!!");
else{
printf("\nDeleted : %d", stack[top]);
top--;
}
}
void display(){
if(top == -1)
printf("\nStack is Empty!!!");
else{
int i;
printf("\nStack elements are:\n");
for(i=top; i>=0; i--)
printf("%d\n",stack[i]);
}
}
INFIX TO POSTFIX

#include <stdio.h>
#define SIZE 50            /* Size
of Stack */
#include <ctype.h>
char s[SIZE];
int top = -1; /* Global
declarations */
 
push(char elem) { /* Function for
PUSH operation */
 s[++top] = elem;
}
 
char pop() { /* Function for POP
operation */
 return(s[top--]);
}
 
int pr(char elem) { /* Function for
precedence */
 switch(elem) {
 
 case'(':
  return 0;

case '^':
return 3;
 case'+':
 case'-':
  return 1;
 case'*':
 case'/':
  return 2;
 }
}
 
int main() { /* Main Program */
 char infx[50], pofx[50], ch, elem;
 int i = 0, k = 0;
 printf("\n\nRead the Infix
Expression ? ");
 scanf("%s", infx);
 while((ch = infx[i++]) != '\0') {
  if(ch == '(')
   push(ch);
  else if(isalnum(ch))
   pofx[k++] = ch;
  else if(ch == ')') {
   while(s[top] != '(')
    pofx[k++] = pop();
   elem = pop(); /* Remove ( */
  } else{ /* Operator */
   while(pr(s[top]) >= pr(ch))
    pofx[k++] = pop();
   push(ch);
  }
 }
 while(s[top] != '/0') /* Pop from
stack till empty */
  pofx[k++] = pop();
  printf("\n\nGiven Infix Expn: %s 
Postfix Expn: %s\n", infx, pofx);
}
STACK ADT

1. Students of a Programming class arrive to submit assignments.


Their register numbers are stored in a LIFO list in the order in
which the assignments are submitted. Write a program using array
to display the register number of the ten students who submitted
first.

Register number of the ten students who submitted first will be at


the bottom of the LIFO list. Hence pop out the required number of
elements from the top so as to retrieve and display the first 10
students.
Low Level: Display the register number of the last submitted record [6 Marks]
Middle Level: Display the register number of the ten students who submitted
first [2 Marks]
High Level: Any query posed by faculty such as checking if a particular student
has submitted the assignment or not [2 Marks]

You might also like