以图明志

数据结构

[专题] 链栈的置空操作与判断链栈是否为空

与单链表的置空操作相同
判断链栈是否为空很简单,还记得结构体定义时的那个 count 吗?如果那个 count 为0,就说明链栈为空。置空链栈就没有置空顺序栈那么简单了。置空顺序栈只要一步 S->top=-1; 即可,但是对于链栈却不是那么回事了。方法是设置两个工作结点,开始循环。在释放p之前,让q成为p的后继。还是那个比喻,在皇帝死之前,册封皇子。free(p); 皇帝死了,p=q; 皇子就成了新皇帝。

数据结构

[专题] 链栈的出栈操作

其实就是删除结点而已
前面讨论了链栈的进栈操作,这里接下来讨论链栈的出栈操作。至于链栈的出栈pop操作,也是很简单的三句操作。假设变量p用来存储要删除 的栈顶结点,将栈顶指针下移一位,最后释放p即可。首先设定一个工作结点 p,并且将栈顶结点赋值给它。然后将栈顶指针下移一位,指向下一结点。代码表示为 S->top=S->top->next;

数据结构

[专题] 链栈的进栈操作

两个步骤即可完成
链栈的操作绝大部分都和单链表类似,只是在插入和删除上,特殊一些。假设元素值为e的新结点是s, top为桟顶指针……那么我分析下过程,首先开辟一个内存空间给 s,然后 s的data就是e,再将新结点s 的后继赋值为当前结点 S->top。最后将栈顶指针指向结点 s。

数据结构

[专题] 链栈:栈的链式存储结构

链栈的结构体定义
前面讲完了栈的顺序存储结构,我们现在来看看栈的链式存储结构,简称为链栈。链栈是没有附加头结点的运算受限的单链表。栈顶指针就是链表的头指针。单链表有头指针,而栈顶指针也是必须的,那干吗不让它俩合二为一呢,所以比较好的办法是把栈顶放在单链表的头部。
1 / 1 首页 < Prev 1 Next > 尾页 页码: