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

相关推荐
RuoZoe14 小时前
重塑WPF辉煌?基于DirectX 12的现代.NET UI框架Jalium
c语言
祈安_4 天前
C语言内存函数
c语言·后端
norlan_jame6 天前
C-PHY与D-PHY差异
c语言·开发语言
琢磨先生David6 天前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
czy87874756 天前
除了结构体之外,C语言中还有哪些其他方式可以模拟C++的面向对象编程特性
c语言
m0_531237176 天前
C语言-数组练习进阶
c语言·开发语言·算法
qq_454245036 天前
基于组件与行为的树状节点系统
数据结构·c#
超级大福宝6 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
岛雨QA6 天前
常用十种算法「Java数据结构与算法学习笔记13」
数据结构·算法
weiabc6 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法