发布网友 发布时间:2024-10-01 17:27
共1个回答
热心网友 时间:2024-11-26 06:32
向一个栈顶指针为HS的链式栈中插入一个s所指的结点时,则执行应该是s->next=top;top=s;
top->next=s; //首先把栈顶与新增元素连接起来
top=s; //然后更新栈顶。
先栈顶后移再赋值。s插入后成为栈顶,s的next就是原来的HS,栈顶指针重新复制为s。
扩展资料:
栈是只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底(push),最后的数据在栈顶(top),需要读数据的时候从栈顶开始弹出数据(top)最后一个数据被第一个读出来。
链式栈中的元素以Node的形式存储,节点Node中存有此节点存于栈中的元素以及指向下个节点的指针。链式栈的数据成员只用保存指向栈顶节点的指针 *top_node。
顺序栈的实现在于使用了数组这个基本数据结构,数组中的元素在内存中的存储位置是连续的,且编译器要求编译期就要确定数组的大小,这样对内存的使用效率并不高,一来无法避免因数组空间用光而引起的溢出问题,二在系统将内存分配给数组后,则这些内存对于其他任务就不可用;
而对于链栈而言,使用了链表来实现栈,链表中的元素存储在不连续的地址,由于是动态申请内存,所以可以以非常小的内存空间开始,另外当某个项不使用时也可将内存返还给系统。
参考资料来源:百度百科-链式栈