基本操作:
链栈的进栈、出栈、获取栈顶元素、判断栈是否为空操作
typedef struct SNode {
int data;
struct SNode* next;
}SNode,*StackPtr;
typedef struct {
StackPtr top;
}LinkStack;
void InitStack(LinkStack& S) { //初始化
S.top = NULL;
}
bool EmptyStack(LinkStack& S) { //判断栈是否为空
if (S.top == NULL) return true;
else return false;
}
void Push(LinkStack& S,int e) { //进栈
StackPtr p;
p = (StackPtr)malloc(sizeof(SNode));//分配内存
p->data = e;
p->next = S.top; //p的next指针指向top
S.top = p;
}
bool Pop(LinkStack& S,int &e) { //出栈
StackPtr p;
if (S.top == NULL)return false; //判是否为空
p = S.top;
e = p->data; //将栈顶元素赋值给e
S.top = S.top->next;
free(p); //释放空间
return true;
}
void GetTop(LinkStack& S, int& e) { //获取栈顶元素
if (S.top == NULL) return false;
e = S.top->data;
}