Реализация нескольких стеков в массиве
В то время как я толкаю элемент в стек 2 и пытаюсь отобразить элемент в стеке 2, я получаю 9 дополнительных с толкаемым элементом все время, почему ?
Что я уже пробовал:
#include <stdio.h> #define max 10 int top1, top2, stk_arr[max]; void push(); void pop(); void display(); void main() { int ch; top1=-1,top2=max; do { printf("\n 1:push\n 2:pop\n 3:display\n 4:exit\n Enter your choice: "); scanf("%d", &ch); switch (ch) { case 1:push(); break; case 2:pop(); break; case 3:display(); break; case 4:printf("exiting from program\n"); break; default:printf("wrong choice\n"); break; } }while(ch!=4); } void push() { int x,ch; if(top1==top2-1) { printf("stack overflow \n"); return; } printf(" Enter a no: "); scanf("%d",&x); printf("\n Press 1 to push in stack1 or press 2 for stack2: "); scanf("%d",&ch); if(ch==1) stk_arr[++top1]=x; else stk_arr[--top2]=x; printf("\n %d Element is successfully pushed \n",x); return; } void pop() { int y,ch; printf("\n Press 1 to pop from stack1 or press 2 for stack2: "); scanf("%d",&ch); if(ch==1) { if(top1==-1) { printf("stack underflow\n"); return; } y=stk_arr[top1]; stk_arr[top1--]=0; } else { if(top2==max) { printf("stack underflow\n"); return; } y=stk_arr[top2]; stk_arr[top2++]=0; } printf("\n%d Element is successfully poped from stack \n", y); return; } void display() { int i; if (top1 == -1) { printf("Stack1 is empty \n"); } else { printf("Elements of Stack1 are : \n"); for (i = 0; i <= top1; i++) { printf("%d\n",stk_arr[i]); } } if (top2 == max) { printf("Stack2 is empty \n"); } else { printf("Elements of Stack2 are : \n"); for (i = max; i >= top2; i--) { printf("%d\n",stk_arr[i]); } } return ; }