当前位置: 首页 > news >正文

数据结构7:栈和队列

文章目录

  • 简介
  • 队列
  • 栈和队列的API函数
    • 栈的API函数
    • 队列的API函数
    • 栈和队列的构成

简介

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

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

队列

队列(FIFO):队列是一种类似于排队的数据结构,先进入的先出来,后进入的后出来,如图2所示。
在这里插入图片描述
在单独对栈和队列进行请详细介绍前,将它们两个先放在一起介绍,是因为栈和队列之间有一些截然不同的东西,但是也有一些相同的地方,所以先将它们放在一起对比进行介绍。

栈和队列的API函数

栈的API函数

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

//生成一个栈
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函数

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

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

http://www.dtcms.com/a/507017.html

相关文章:

  • SpringBoot的启动流程原理——小白的魔法引擎探秘
  • Vue3 + Element Plus 弹框树形结构首次打开不更新问题排查与解决
  • 我先做个网站怎么做网络推广技术外包
  • 互联网公司排名前十名名单seo整站优化更能准确获得客户
  • 网络运维学习笔记
  • Helm、HPA 与 Rancher:Kubernetes(十) 生态核心工具详解
  • Docker常见问题
  • 拟合优度:模型与数据的契合之度
  • 理解 Python 的有序字典 OrderedDict
  • 狙击生态的演化史:从抢跑到模型套利
  • 用C语言实现外观模式
  • Git三路合并算法的弊端
  • 网站模板文件扫描工作招聘58同城
  • 网站建设上线问题企业网站的推广方法有哪些
  • LeetCode:207. 课程表
  • Oracle EBS ERP开发——报表生成Excel标准模板设计
  • CANoe基础讲解02:掌握CANoe Trace窗口
  • Kanass V1.3.3版本发布,支持在线安装与消息配置
  • 第十七篇:本地模型部署:使用DeepSeek开源模型进行离线推理
  • 【STM32项目开源】基于STM32的智能家居环境监测系统
  • 串口AT指令控制EC20连接MQTT服务器
  • 如何实现企业网站推广的系统性网站建设腾讯课堂
  • 全网营销型的网站wordpress 开源吗
  • 常见Linux环境变量深度解析
  • Jetson上安装TensorRT
  • 开发避坑指南(62):解决URLDecoder:Illegal hex characters in escape (%) pattern 异常
  • DAX分列年月日
  • 【开题答辩实录分享】以《自然灾害隐患点管理信息系统》为例进行答辩实录分享
  • dpdk如何与内核进行交互——vdev的用法
  • 丝杆模组如何满足高精度加工设备的高要求?