同单链表类似,每一个节点都有指向下一个节点的指针域,但是不同于单链表的是,栈只能是top(栈顶)位置的元素在变化, 换句话说,栈的插入和删除都是针对固定的位置,不像单链表,只要位置合理,可以是任意的位置。所以栈的操作,不管是顺序结构还是链式结构,相对来说都简单很多。
定义
typedef struct StackStruct{
ElemType e;
SSLP next;
}SSL,*SSLP;
typedef struct LinkList{
SSLP top;
}
插入和删除
和顺序栈不同,这里的top不再是游标,可以理解成一个对象。插入只需将新的结点赋值给top,再讲新节点的next指向原来的top
s->next = S->top;
S->top = s;
删除也类似,将top指向的结点弹出,top的next变成新的top
S->top = S->top->next