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

数据结构学习(days04)

栈(Stack)

定义
栈是一种只允许在一端进行插入和删除操作的线性存储结构。这一端被称为栈顶(Top)。

栈的特点
先进后出(FILO:First In Last Out)
插入操作称为:入栈(Push)
删除操作称为:出栈(Pop)

栈的结构分类
(1)栈顶状态:
满栈:栈顶达到预设最大容量
空栈:栈顶指针位于初始位置

(2)栈的生长方向:
根据栈顶指针增长的方向不同,可分为:

类型描述
增栈栈顶从低地址向高地址增长
减栈栈顶从高地址向低地址增长(如:系统调用栈)

因此,也可衍生出四种状态描述方式:
满增栈、满减栈、空增栈、空减栈

栈的典型应用
函数调用栈(递归)
表达式求值(中缀转后缀)
括号匹配
回溯算法(DFS)

队列(Queue)

定义
队列是一种只允许从一端插入、从另一端删除的线性结构。
插入操作称为:入队(Enqueue)
删除操作称为:出队(Dequeue)

队列的特点
先进先出(FIFO:First In First Out)
插入端称为:队尾(Rear)
删除端称为:队头(Front)

循环队列(Circular Queue)

普通队列在用数组实现时,会存在“假溢出”问题——即使数组有空闲空间,但由于队尾已到达数组末尾,无法继续插入。
为了解决这个问题,引入循环队列:将队列首尾相连形成一个环状结构。

判空与判满逻辑(关键点)
为了区分队空和队满的情况,通常循环队列会少存储一个元素,也就是如果数组长度为 N,最多只能存储 N-1 个元素。

判空条件:

front == rear

即:队头指针与队尾指针重合时,队列为空。

判满条件:

(rear + 1) % capacity == front

即:队尾向前移动一位后刚好等于队头,表示队列已满。

模运算实现循环
循环的关键是使用模运算实现“回绕”:

rear  = (rear + 1) % capacity;
front = (front + 1) % capacity;

栈与队列对比总结表

项目栈(Stack)队列(Queue)
基本定义只允许从一端进行插入和删除的线性结构允许从一端插入、另一端删除的线性结构
操作方式插入、删除都在栈顶进行插入在队尾,删除在队头
数据特性先进后出(FILO)先进先出(FIFO)
操作名称入栈(push)、出栈(pop)入队(enqueue)、出队(dequeue)
特殊概念满栈、空栈;增栈、减栈(栈顶增长方向)队满、队空;循环队列常见实现
满/空判断栈顶是否超出容量范围循环队列:<br>空:front == rear<br>满:(rear + 1) % N == front
常见实现顺序栈、链栈顺序队列、链式队列、循环队列
http://www.lryc.cn/news/612245.html

相关文章:

  • 嵌入式C语言连连看小游戏开发实现详解
  • Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备故障预测与智能运维中的应用(384)
  • 93、【OS】【Nuttx】【构建】cmake menuconfig 目标
  • linux 使用docker时开放的端口不受防火墙控制的解决方案
  • 无监督学习之K-means算法
  • 第一性原理科学计算服务器如何选择配置-CPU选择篇
  • ADM2587EBRWZ-REEL7_ADI亚德诺_隔离RS-485收发器_集成电路IC
  • 点赞服务完整消息流转过程详解(原方案,未使用Redis)
  • 数据仓库命名规范
  • TypeScript 数组类型精简知识点
  • 【后端】java 抽象类和接口的介绍和区别
  • Unity打造塔科夫式网格背包系统
  • Enhancing Long Video Question Answering with Scene-Localized Frame Grouping
  • 根据经纬度(从nc格式环境数据文件中)提取环境因子
  • 基于Hadoop的股票大数据分析可视化及多模型的股票预测研究与实现
  • 2025年测绘程序设计模拟赛一--地形图图幅编号及图廓点经纬度计算
  • DAY32打卡
  • golang的map
  • 哈尔滨云前沿-关于物理服务器
  • 关于 idea 里 properties 文件的中文乱码问题
  • get请求中文字符参数乱码问题
  • 软件定义汽车 --- 电子电气架构的驱动
  • Vue Vant使用
  • AI大语言模型如何重塑软件开发与测试流程
  • 初识神经网络01——认识PyTorch
  • 需求EAV模型的优化与思考
  • PCL 平面特征点提取
  • 一、Istio基础学习
  • Next.js 服务器组件与客户端组件:区别解析
  • [FOC电机控制]-高速刹车机制