#include <iostream>
#include <stdlib.h>
using namespace std;
typedef int ElemType;//链栈的结点类型
//栈的链式存储类型
typedef struct Linknode
{
ElemType data;
struct Linknode *next;
}*LiStack;
//初始化
void InitStack(LiStack &L)
{
L=NULL;//初始化一个空栈
}
//元素进栈
bool push(LiStack &L, ElemType e)
{
Linknode *s=(Linknode *)malloc(sizeof(Linknode));//为新元素分配内存空间
if(s==NULL)
return false;//内存空间分配失败,返回false
s->data=e;
s->next=L;//将元素插在栈顶
L=s;//改变栈顶指针
return true;
}
//元素出栈
bool pop(LiStack &L, ElemType &e)
{
if(L==NULL)
return false;//栈空则失败
e=L->data;
cout<<"栈顶元素"<<e<<"出栈!"<<endl;
Linknode *s=L;//用指针s指向要删除的栈顶元素
L=L->next;//改变栈顶指针
free(s);//释放s指向的元素
return true;
}
//取栈顶元素
void GetElem(LiStack L)
{
if(L==NULL)
cout<<"栈空"<<endl;
else