链栈的结构:
由于栈的主要操作是在栈顶插入和删除, 显然以链表的头部作为栈顶是最方便的,且不需要附加一个头结点。
初始化:
栈顶指针S置空即可。
入栈:
链栈不需要判断栈是否满!
出栈:
栈顶指针S等于NULL表空栈,即链栈S==NULL时为空栈。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef int SElemType;
//链栈的存储结构
typedef struct StackNode
{
SElemType data;
struct StackNode *next;
}StackNode,*LinkStack;
//初始化
void InitStack(LinkStack &S)
{
S = NULL; //构造一个空栈,栈顶指针置空即可