首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

查找栈中的异常

2012-03-06 
查找栈中的错误#include stdio.h#define MAX 10typedef struct{int c[MAX]int top}stackvoid pushsta

查找栈中的错误
#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循环执行一次,所以只输入了一个数。

热点排行