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

相关推荐
阿米亚波9 小时前
【C++ STL】std::unordered_multimap
开发语言·数据结构·c++·笔记·stl
caishenzhibiao9 小时前
期货先行者主图 同花顺期货通指标
java·c语言·c#
三克的油11 小时前
数据结构-4
数据结构
NoteStream12 小时前
【c语言基础】C语言常见概念
c语言·开发语言·编辑器
caishenzhibiao13 小时前
先行者副图 同花顺期货通指标
java·c语言·c#
05664613 小时前
Python康复训练——数据结构
数据结构·windows·python
回眸不遇13 小时前
将 Docker虚拟磁盘文件ext.vhdx迁移出C盘 ,更换到D盘
c语言·docker·容器
冻柠檬飞冰走茶13 小时前
PTA基础编程题目集 7-27 冒泡法排序(C语言实现)
c语言·开发语言·数据结构·算法
wuyk55513 小时前
77.嵌入式 C 语言中 enum 枚举的工程化实践:告别魔法数字,提升代码可维护性
c语言·开发语言·stm32·单片机·嵌入式硬件
lightqjx14 小时前
【Linux系统】基础 IO
linux·c语言·重定向·缓冲区·文件io·文件的系统调用