直接上代码
#include <iostream>
using namespace std;
typedef int SElemType;
typedef struct StackNode
{
SElemType data;
struct StackNode *next;
}StackNode, *LinkStack;
//链栈的初始化
void InitStack(LinkStack &S)
{
S = NULL; //构造一个空栈,栈顶指针为空
return ;
}
//判断链栈是否为空
bool StackEmpty(LinkStack &S)
{
if (S == NULL) //只要头结点不指向空
return true;
else
return false;
}
//链栈的入栈
int EnStack(LinkStack &S, SElemType e)
{
StackNode *p = new StackNode; //生成新节点P用于存储入栈元素信息
p->data = e;
p->next = S;
S = p;
return 1;
}
//链栈的出栈
int DeStack(LinkStack &S, SElemType &e)
{
if (S == NULL)
return -4;
StackNode *p = new StackNode; //生成新节点p,用于存储要出栈的位置信息
e = S->data; //将S所指向的元素数据存在e中
p = S; //将
S = S->next; //将栈顶指针下移一位
delete p; //释放节点p
return 0;
}
int main()
{
system("pause");
}