sejwy

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

数据结构复习——链、链栈。

1、栈(Stack):是只允许在一端进行插入或删除的线性表。首先栈是一种线性表,但限定这种线性表只能在某一端进行插入和删除操作。

2、栈的常见基本操作:
InitStack(&S):初始化一个空栈S。
StackEmpty(S):判断一个栈是否为空,若栈为空则返回true,否则返回false。
Push(&S, x):进栈(栈的插入操作),若栈S未满,则将x加入使之成为新栈顶。
Pop(&S, &x):出栈(栈的删除操作),若栈S非空,则弹出栈顶元素,并用x返回。
GetTop(S, &x):读栈顶元素,若栈S非空,则用x返回栈顶元素。
DestroyStack(&S):栈销毁,并释放S占用的存储空间(“&”表示引用调用)。

3、链栈:采用链式存储的栈称为链栈。

链栈组成:

  1. 节点结构体:每个节点包含一个数据域和一个指向下一个节点的指针。

  2. 栈结构体:包含一个指向栈顶的指针。

 

图示:

 链栈实质是遵循栈的属性的链表:栈顶可以理解为链表的头结点。链栈遵循栈顶先出原则,故仅通过栈顶便可以实现出入栈操作。对于空栈来说,链表原定义是头指针指向空,那么链栈的空其实就是top=NULL的时候。链栈的进栈push和出栈pop操作都很简单,时间复杂度均为O(1)。

入栈实质上是链表操作的头插法:先将新节点指向原栈顶,再将栈顶指针指向新节点即完成入栈操作。

出栈:先取出栈顶值,再将栈顶指向栈顶的下一个节点即完成出栈操作。

链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。

 

posted on   小小卷心菜  阅读(28)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示