在此程序中,彈出功能未被執行。使用函數c中的堆棧操作
語句'Popped value'不會輸出。
當我顯示堆棧時,即使在調用pop函數之後,我所推送的所有元素都將被打印。
我需要知道爲什麼會發生這種情況。
#include<stdio.h>
#define MAX 7
int x,st[MAX],i,top=-1;
// Entering the elements into stack
void push()
{
if(top>=MAX)
printf("Stack overflow\n");
else
{
printf("\nEnter element to be pushed: ");
scanf("%d",&x);
top++;
st[top]=x;
}
}
//Deleting an element from the stack
int pop()
{
if(top==-1)
printf("Stack is empty");
else
{
x=st[top];
top--;
return(x);
}
}
//Displaying contents of stack
void display()
{
if(top<=-1)
printf("Stack Empty");
else
{
printf("Stack contents\n");
for(i=top;i>=0;i--)
printf("%d\n",st[i]);
}
}
int main()
{
int c,item;
char ch='y';
while(ch=='y')
{
printf("Enter choice\t");
printf("1.Push 2.Pop 3.Display 4.Exit \n");
scanf("%d",&c);
switch(c)
{
case 1:
push();
break;
case2:
item=pop();
printf("Popped value %d",item);
break;
case 3:
display();
break;
case 4:
exit(0);
break;
}
}
getch();
}
將'case2:'更改爲'case 2:'。投票結束這個簡單的錯字。 – Lundin
小心!在'top'爲-1的情況下,你將'返回'**沒有任何**並基本上調用UB ....請啓用編譯器警告。 –