栈的链式存储结构
top-栈顶->........->栈底
其栈顶就相当于头结点
以下代码:
typedef struct StackNode {
int data;
struct StackNode*next;
}StackNode,*Stackptr;
typedef struct LinkStack {
Stackptr top;//top指针,指向元素
//没有长度限制,只有计数器来记录长度
int cnt;//计数器
}LinkStack;
//进栈操作就是在表头添加一个结点,并把次结点当做头结点
void LinkPush(LinkStack *s, int e) {
Stackptr p = (Stackptr)malloc(sizeof(StackNode));
p->data = e;
p->next = s->top;
s->top = p;
s->cnt++;
}
//出栈操作就是把栈顶下移一个,计数器减一。
void LinkPop(LinkStack*s, int *e) {
Stackptr p;
*e = s->top->data;
p = s->top;
s->top = p;
s->top = s->top->next;//栈顶下移
s->cnt--;
}