查找栈中的错误
#include <stdio.h>
#define MAX 10
typedef struct
{
int c[MAX];
int top;
}stack;
void pushstack(stack *ST,int x) //压栈
{
if(ST->top == MAX-1) //判断溢出
printf("the stack up flow!\n");
else
{
++ST->top;
ST->c[ST->top] = x;
}
}
void popstack(stack *ST) //出栈
{
int x;
if(ST->top == 0) //判断溢出
printf("the stack down flow!\n");
else
{
x = ST->c[ST->top];
printf("%d",x);
--ST->top;
}
}
void main()
{
int i,x;
stack *ST = NULL;
for(i = 0; i < 1; i++)
{
scanf("%d\n",&x);
pushstack(ST,x);
}
printf("output stack;\n");
for(i = 0; i < 1; i++)
{
popstack(ST);
}
getch();
}
程序中,
输入:
1 2
输出:
1
想了很久,不知道那里出了问题?
为什么输出总少了最后的一个元素?
[解决办法]
首先你根本没有分配栈的内存
另外,ST没有指向栈
[解决办法]
错误之处在于:
for(i = 0; i < 1; i++)
{
scanf("%d\n",&x);
pushstack(ST,x);
}
1、scanf中不能有 \n
2、for循环执行一次,所以只输入了一个数。