代码在清空栈方面有一点问题,在清空之后仍然可以输出之前的数据。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<iostream>
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;
retur
博客讨论了链栈数据结构中遇到的问题,即在执行清空栈操作后,仍能输出栈内之前的数据,暗示可能存在代码逻辑错误。
最低0.47元/天 解锁文章
1647

被折叠的 条评论
为什么被折叠?



