我正在使用视觉工作室 2012。
我正在尝试使用单个数组实现 2 个堆栈。
我的 C 代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int arr[10], ch=1, *top1=&arr[0]-1, *top2=&arr[9]+1;
while(ch!=5)
{
printf("1. Push in Stack 1\n2. Pop from Stack 1\n3. Push in Stack 2\n4. Pop from Stack 2\n5.Exit");
scanf("%d",&ch);
switch(ch)
{
case 1:
if(top1+1 !=top2)
{
scanf("%d",*++top1);
}
else
printf("stack is full");
break;
case 2:
if(top1 != &arr[0]-1)
printf("%d",*top1);
else
printf("Stack is Empty");
break;
case 3:
if(top2-1 !=top1)
{
scanf("%d",*--top2);
}
else
printf("stack is full");
break;
case 4:
if(top2 != &arr[9]+1)
printf("%d",*top2);
else
printf("Stack is Empty");
break;
case 5:
return(0);
}
}
return 0;
}
代码运行正常, scanf("%d",*++top1);
并且scanf("%d",*--top2);
没有
接受输入。
scanf 的用法是否正确?