链栈的基本操作、指针实现,能调试不运行
//此程序较简单,调用函数三个,为(初始化)(入栈)(出栈)。通过循环入栈实现建立栈,循环出栈实现栈的逆序输出。//问题:调试没错,语法应该没问题,但输入值运行的时候不行,
//本人使用软件为VC++
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define MASIZE 100
typedef int SElemType;
typedef int Status;
typedef struct StackNode{
SElemType date;
struct StackNode *next;
}StackNode,*LinkStack;
StackNode *S;
int main()
{
Status InitStack(); //初始化
Status Push(SElemType e); //入栈
Status Pop(SElemType e); //出栈
int N,i;
SElemType X,E;
InitStack(); //初始化
printf("输入要建立栈的长度:"); //此处通过入栈实现栈的建立
scanf("%d",&N);
printf("空格隔开输入%d个数:",N);
for(i=0;i<N;i++){
scanf("%d",&X);
Push(X); //入栈
}
printf("逆序输出栈:");//此处通过出栈实现栈的逆序输出
for(i=N;i>0;i++){
E=Pop(E); //出栈
printf("%d",E);
}
return 0;
}
Status InitStack()//初始化
{
S=NULL;
return OK;
}
Status Push(SElemType e)//入栈
{
StackNode *p;
p->date=e;
p->next=S;
S=p;
return OK;
}
Status Pop(SElemType e)//出栈
{
//StackNode *p;
if(S==NULL) return ERROR;
e=S->date;
//p=S;//此处用来下面释放p,我已将其注释
S=S->next;
//delete p;//释放原栈顶指针空间
return OK;
}