数据结构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函数都可以在线性表的基础上进行实现,这也是栈和队列的相同之处;在下面的章节中,我们会对它们的实现进行详细的讲解。

相关推荐
_日拱一卒10 分钟前
LeetCode:矩阵置零
java·数据结构·线性代数·算法·leetcode·职场和发展·矩阵
橘子编程36 分钟前
GoF 23 种设计模式完整知识总结与使用教程
java·c语言·开发语言·python·设计模式
意疏1 小时前
【C语言】解决VScode中文乱码问题
c语言·开发语言·vscode
汀、人工智能1 小时前
[特殊字符] 第94课:删除无效的括号
数据结构·算法·数据库架构·图论·bfs·删除无效的括号
Shadow(⊙o⊙)1 小时前
C语言学习中需要的额外函数
c语言·开发语言·学习
Imxyk1 小时前
P9244 [蓝桥杯 2023 省 B] 子串简写
数据结构·c++·算法
艾莉丝努力练剑1 小时前
【Linux线程】Linux系统多线程(四):线程ID及进程地址空间布局,线程封装
java·linux·运维·服务器·c语言·c++·学习
汀、人工智能1 小时前
[特殊字符] 第106课:旋转图像
数据结构·算法·矩阵·数据库架构·数组·旋转图像
牧瀬クリスだ1 小时前
七大排序一次满足
数据结构·算法·排序算法
liu****1 小时前
第15届省赛蓝桥杯大赛C/C++大学B组
开发语言·数据结构·c++·算法·蓝桥杯·acm