Advertisement
d1i2p3a4k5

2.TWO STACK's using single array (DS)

Oct 29th, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.75 KB | None | 0 0
  1. #include<conio.h>
  2. #include<stdio.h>
  3. #define max 100
  4. typedef struct
  5. {
  6.     int s[max];
  7.     int tos1,tos2;
  8. }stack;
  9. int isempty1(stack *t)
  10. {
  11.     if(t->tos1==-1)
  12.         return 1;
  13.     else
  14.         return 0;
  15. }
  16. int isempty2(stack *t)
  17. {
  18.     if(t->tos2==max+1)
  19.         return 1;
  20.     else
  21.         return 0;
  22. }
  23. void push1(stack *t,int ele)
  24. {
  25.     if(t->tos2==(t->tos1+1))
  26.     {
  27.         printf("\n Stack 1st Overflow\n");
  28.         return ;
  29.     }
  30.     t->tos1++;
  31.     t->s[t->tos1] = ele;
  32.     return ;
  33. }
  34. void push2(stack *t,int ele)
  35. {
  36.     if(t->tos2==(t->tos1+1))
  37.     {
  38.         printf("\n Stack 2nd Overflow\n");
  39.         return ;
  40.     }
  41.     t->tos2--;
  42.     t->s[t->tos2] = ele;
  43.     return ;
  44. }
  45. void pop1(stack *t)
  46. {
  47.     int z;
  48.     if(isempty1(t)==1)
  49.     {
  50.         printf("\n Stack 1st underflow\n");
  51.         return;
  52.     }
  53.     z = t->s[t->tos1];
  54.     t->tos1--;
  55.     printf("\nDeleted element is %d",z);
  56.     return;
  57. }
  58. void pop2(stack *t)
  59. {
  60.     int z;
  61.     if(isempty2(t)==1)
  62.     {
  63.         printf("\n Stack 2nd underflow\n");
  64.         return;
  65.     }
  66.     z = t->s[t->tos2];
  67.     t->tos2++;
  68.     printf("\nDeleted element is %d",z);
  69.     return;
  70. }
  71. void top1(stack *t)
  72. {
  73.     int z;
  74.     if(isempty1(t)==1)
  75.     {
  76.         printf("\nStack 1st Underflow");
  77.         return;
  78.     }
  79.     z=t->s[t->tos1];
  80.     printf("\n Tos1 is %d",z);
  81.     return;
  82. }
  83. void top2(stack *t)
  84. {
  85.     int z;
  86.     if(isempty2(t)==1)
  87.     {
  88.         printf("\nStack 2nd Underflow");
  89.         return;
  90.     }
  91.     z=t->s[t->tos2];
  92.     printf("\n Tos1 is %d",z);
  93.     return;
  94. }
  95. void display1(stack *t)
  96. {
  97.     int i,z;
  98.     if(isempty1(t)==1)
  99.     {
  100.         printf("\nStack 1st is empty");
  101.         return;
  102.     }
  103.     printf("\nElement of stack 1st is given below\n");
  104.     for(i=t->tos1;i>=0;i--)
  105.     {
  106.         printf("%d\t",t->s[i]);
  107.         if(i==0)
  108.         {
  109.             break;
  110.         }
  111.  
  112.     }
  113.     return;
  114. }
  115. void display2(stack *t)
  116. {
  117.     int i;
  118.     if(isempty2(t)==1)
  119.     {
  120.         printf("\nStack 2nd is empty");
  121.         return;
  122.     }
  123.     printf("\nElement of stack 2nd is given below\n");
  124.     for(i=t->tos2;i<=max;i++)
  125.     {
  126.         printf("%d\t",t->s[i]);
  127.     }
  128.     return;
  129. }
  130. int main()
  131. {
  132.     int ele,ch;
  133.     stack x;
  134.     x.tos1 = -1;
  135.     x.tos2 = max+1;
  136.     printf("\nIMPLEMENTATION OF TWO STACKS USING SINGLE ARRAY\n");
  137.     while(1)
  138.     {
  139.         printf("\nENTER CHOICE \n1.push ele in 1st stack \n2.push ele in 2nd stack \n3.pop ele from 1st stack \n4.pop ele from from 2nd \n5.tos1 \n6.tos2 \n7.Display 1st stack \n8.Display 2nd stack \n9.Exit\n");
  140.         scanf_s("%d",&ch);
  141.         if(ch==9)
  142.             break;
  143.         else
  144.         {
  145.             switch(ch)
  146.             {
  147.             case 1: printf("\nenter element to be inserted\n");
  148.                 scanf_s("%d",&ele);
  149.                 push1(&x,ele);
  150.                 break;
  151.             case 2: printf("\nenter element to be inserted\n");
  152.                 scanf_s("%d",&ele);
  153.                 push2(&x,ele);
  154.                 break;
  155.             case 3:pop1(&x);
  156.                 break;
  157.             case 4:pop2(&x);
  158.                 break;
  159.             case 5:top1(&x);
  160.                 break;
  161.             case 6:top2(&x);
  162.                 break;
  163.             case 7:display1(&x);
  164.                 break;
  165.             case 8:display2(&x);
  166.                 break;
  167.             default:printf("\nINVALID INPUT");
  168.             }
  169.         }
  170.     }
  171.     _getch();
  172.     return 0;
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement