初始化一个数据元素为整形的链栈,并实现进栈、出栈、获得栈顶元素等操作。
通过控制台将1,2,3,4,5进栈,出栈两次,获得栈顶元素并输出,6进栈,打印栈内的所有内容。
#include<iostream>
#include<cstdio>
#define MAXSIZE 100
#define OK 1
#define ERROR 0
using namespace std;
typedef struct StackNode //链栈的定义
{
int data;
struct StackNode *next;
}StackNode,*LinkStack;
int InitStack(LinkStack &S) //初始化链栈,将栈顶指针置空
{
S=0;
return OK;
}
int Push(LinkStack &S, int e) //入栈,注意此处e不是引用传递
{
StackNode *p;
p=new StackNode;
p->data=e;
p->next=S; //将新结点插入栈顶
S=p; //修改栈顶指针为p
return OK;
}
int Pop(LinkStack &S, int &e) //出栈,此处e为引用传递
{
StackNode *p;
if(S==0) return ERROR;
e=S->data; //将栈顶元素赋给e
p=S; //用p临时保存栈顶,以待删除
S=S->next; //修改栈顶指针
delete p; //释放原栈顶的空间
return OK;
}
int GetTop(LinkStack S) //取栈顶元素
{
if(S!=0) return S->data;
}
int main()
{
S