数据结构7:栈和队列

文章目录

简介

在前面的章节中,我们介绍了线性表这一数据结构,并且对它的两种类型,顺序表和链表做了较为详细的介绍,接下来我们将介绍栈和队列这两种常用数据结构。在第一章绪论中,我们对栈和队列进行了简单的介绍。

栈(FILO):栈是一种类似于枪弹夹一样的数据结构,先进入的最后弹出,后进入的先弹出,如图1所示。

队列

队列(FIFO):队列是一种类似于排队的数据结构,先进入的先出来,后进入的后出来,如图2所示。

在单独对栈和队列进行请详细介绍前,将它们两个先放在一起介绍,是因为栈和队列之间有一些截然不同的东西,但是也有一些相同的地方,所以先将它们放在一起对比进行介绍。

栈和队列的API函数

栈的API函数

栈作为一种先进后出的数据介绍,在数据的暂存方面有着广泛的应用,比如现在很多文件编辑软件中的撤回,就是以类似栈的形式进行实现的,进行编辑时会保存编辑的内容,先进行的编辑会早入栈但是会后出栈,后编辑的内容会后入栈,但是出栈早,进行实现了编辑操作的可撤回。栈的API主要包括以下几个:

c 复制代码
//生成一个栈
Stack StackCreat();
//销毁一个栈
int StackDestroy(Stack **stack);
//清空一个栈
int StackClear(Stack *stack);
//获取栈的长度,即栈内元素个数
int StackGetlen(Stack *stack);
// 栈是否为空
int StackEmpty(Stack *stack);
//栈是否为满
int StackFull(Stack *stack);
//元素入栈
int StackPush(Stack *stack,int data);
//元素出栈
int StackPop(Stack *stack);

队列的API函数

队列作为一种先进先出(后进后出)的数据结构,在类似排队的问题的处理上有着和好的作用。例如,访问服务器时,如果访问的人数过多,则后访问的人要进行排队,以此等待服务器允许访问。

c 复制代码
//生成一个队列
Queue *QueueCreat();
//销毁一个队列
int QueueDestroy(Queue **queue);
//清空一个队列
int QueueClear(Queue *queue);
//获取队列的长度,即队列内元素个数
int QueueGetlen(Queue *queue);
//队列是否为空
int QueueEmpty(Queue *queue);
//队列是否为满
int QueueFull(Queue *queue);
//元素入队列
int QueueIn(Queue *queue,int data);
//元素出队列
int QueueOut(Queue *queue);

栈和队列的构成

栈和队列都是可以根据线性表来构成的,其API函数都可以在线性表的基础上进行实现,这也是栈和队列的相同之处;在下面的章节中,我们会对它们的实现进行详细的讲解。

相关推荐
咪咪渝粮12 小时前
112.路径总和
java·数据结构·算法
IoT智慧学堂12 小时前
C语言运算符与表达式详解——算术、逻辑与赋值的全面理解
c语言·开发语言
电子_咸鱼12 小时前
高阶数据结构——并查集
数据结构·c++·vscode·b树·python·算法·线性回归
xiaoye-duck13 小时前
数据结构之二叉树-堆
数据结构
CAU界编程小白13 小时前
数据结构系列之快速排序
数据结构·c++·算法
卡提西亚13 小时前
一本通网站1130:找第一个只出现一次的字符
数据结构·c++·笔记·算法·一本通
lkbhua莱克瓦2413 小时前
Java基础——集合进阶用到的数据结构知识点3
java·数据结构·github·平衡二叉树·avl
蒙奇D索大14 小时前
【算法】递归算法的深度实践:深度优先搜索(DFS)从原理到LeetCode实战
c语言·笔记·学习·算法·leetcode·深度优先
一叶之秋141214 小时前
玩转二叉树:数据结构中的经典之作
数据结构
啊吧怪不啊吧14 小时前
一维前缀和与二维前缀和算法介绍及使用
数据结构·算法