代码在清空栈方面有一点问题,在清空之后仍然可以输出之前的数据。
#include#include #include #include #include using namespace std; #define Status int #define SElemType int typedef struct StackNode { SElemType data; struct StackNode *next; }StackNode,*linkStack; //初始化 Status InitStack(linkStack &S) { S = NULL; return 1; } //入栈 Status Push(linkStack &S,SElemType e) { StackNode *p; p=new StackNode; p->data=e; p->next=S; S=p; return 1; } //出栈 bool Pop(linkStack &S,SElemType &e) { linkStack p; if(S==NULL){ printf("栈已空!"); return 0;} e=S->data; p=S; S=S->next; free(p); return 1; } //取栈顶 bool GetTop(linkStack &S,SElemType &e) { if(S==NULL){ printf("栈已空!"); return 0;} e=S->data; return 1; } //遍历输出 int print(linkStack S){ int e; if(S==NULL){ printf("栈已空!"); return 0;} printf("从栈顶向栈底输出:"); while (S!=NULL){ e=S->data; printf("%d ",e); S=S->next; } printf("n"); return 1; } //清空栈 void setnull(linkStack S){ S=NULL; print(S); } int main() { linkStack S; int a,b,c,d,e,f; while(1){ printf("1.初始化 2.入栈 3.出栈 4.取栈顶 5.输出 6.清空栈 7.结束n"); printf("请输入选择的操作:n"); scanf("%d",&a); if(a==7) break; switch(a) { case 1:{ InitStack(S); printf("初始化成功!"); break;} case 2:{ printf("请输入入栈元素个数:n"); scanf("%d",&b); printf("请输入元素的值:"); for(int i=0;i



