数据结构3-栈的知识点整理

导读:本篇文章讲解 数据结构3-栈的知识点整理,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1. 栈的定义和基本操作

1.1 栈的定义

  1. 栈(Stack):是只允许在一端进行插入或删除操作的线性表。也就是栈是一种特殊的线性表。
  2. 栈的特点:后进先出LIFO(last in first out)
  3. 栈的一些相关名词:栈顶、栈底、空栈。
    在这里插入图片描述

1.2 栈的基本操作

在这里插入图片描述

1.3 栈的分类

* 物理结构的不同使得栈的种类不同
	1. 顺序结构
		1. 静态顺序栈
		2. 动态顺序栈
	2. 链式结构
		1. 静态链栈
		2. 动态链栈

1.4 栈的两种实现

  1. 栈顶指针指向栈顶元素。
  2. 栈顶指针指向栈顶元素的下一个位置。

在这里插入图片描述
一般top指向当前栈顶元素的实现方式更常见。

注意:这两种方式在进行增、删、查的时候,操作也不一样。注意是++top还是top++的问题。

1.5 小结

在这里插入图片描述

2. 静态顺序栈

2.1 基本操作

2.1.1 初始化操作以及判断栈是否为空

在这里插入图片描述

注意:由于使用的是静态数组,所以,销毁栈的操作不需要我们手动进行销毁,交给程序销毁。

2.1.2 进栈操作

在这里插入图片描述

2.1.3 出栈操作

在这里插入图片描述

2.1.4 读取栈顶元素

在这里插入图片描述

2.2 共享栈

共享栈就是两个栈共用同一块内存空间,这块空间的两端分别是两个栈的栈底,如下图所示:
在这里插入图片描述

2.3 小结

在这里插入图片描述

3. 动态链栈

3.1 基本操作

3.1.1 初始化操作

在这里插入图片描述
和链表的定义一模一样,实际上,链栈就是限制链表只能在一头进行增加和删除元素。通常,我们取头部的那一端,也就是在头节点的后面进行添加和删除操作,这样就形成了链栈。

3.1.2 往链栈顶添加元素

在这里插入图片描述
实际上,链栈就是限制链表只能在一头进行增加和删除元素。通常,我们取头部的那一端,也就是在头节点的后面进行添加和删除操作,这样就形成了链栈。
代码描述如下:
在这里插入图片描述

注意:这里链栈的举例使用的是带头结点。

3.1.3 链栈顶弹出元素

链栈弹出顶部元素过程图:
在这里插入图片描述
代码描述:
在这里插入图片描述

3.1.4 查看栈顶元素

在这里插入图片描述

3.2 两种实现方式

一种是带头结点,一种是不带头结点:
在这里插入图片描述
我们知道链表一般带头节点,是为了在头指针后面添加或删除元素与其他位置统一。但是,在链栈中,不会在其他地方插入或删除元素,所以,我们一般采用不带头结点的方式去实现链栈,这样删除、添加操作更加简单,并且更加节省空间。

3.3 小结

在这里插入图片描述

4. 栈的代码实现(C语言)

https://blog.csdn.net/qq_43546676/article/details/105974182

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84620.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!