首页 > 编程语言 >数据结构与算法分析-Chapter3

数据结构与算法分析-Chapter3

时间:2024-12-17 18:56:32浏览次数:5  
标签:队尾 队列 入队 Chapter3 算法 front 数据结构 自加 rear

Chapter3-栈和队列

        1.栈和队列是两种常用的线性存储表。

        2.都限定关于插入和删除元素的操作在表的端点进行。栈只能在栈顶进行操作,队列仅能在队首和队尾进行操作。

3.1 栈

3.1.1 栈的基本概念

        1.只允许在一段插入和删除元素的线性表。

        2.允许插入和删除元素的一段成为栈顶top,另一端成为栈底bottom.

        3.遵循后进先出(LIFO)规则。

3.1.2 顺序栈——栈的数组表示

        在实现过程中主要通过向数组中依次插入元素即可(前提是不溢出)。需要注意的是:**因为采用数组的时候必须指定一个特定的大小size,则需要一个技术器count来根据插入和删除元素的情况进行判断是否溢出。同时这也是循序栈的一个缺点。

3.1.3 链式栈

        1.借助链表的方式解决了顺序栈空间不足的问题,可以根据实际需求进行动态扩容。

        2.在实现过程中与单链表的实现方式类似。栈底的后继是NULL,在栈顶需要一个top指针指向栈顶元素。
在这里插入图片描述

3.2 队列

3.2.1 队列的基本概念

        1.队列是只允许在一端对头front删除,一端插入队尾rear的线性表。

        2.遵循先进先出(FIFO)规则。

3.2.2 链队列

        链式队列在入队是无队满的问题,但有队空的问题。队空的条件为:

front == rear

在这里插入图片描述

3.2.3 循环队列——队列的顺序存储结构

        相较于链队列,循环队列的入队和出队规则以及状态判定都要变得更为复杂一些:


1.顺序队列的入队和出队原则

        (1)入队时将新元素按rear指示位置加入再将队尾rear自加一:rear = rear + 1

        (2)出队时将下表为front的元素去除,再将对头front自加一:front = front + 1

        (3)队满时再入队将溢出错误。

        (4)队空时再出队将队空处理。

        (5)解决假溢出方法:将队列元素存放数组首位相连,形成循环队列。


2.循环队列的计算判断

        对头front和队尾rear自加一时从maxSize - 1直接进到0,可用mod运算实现:

                (1)对头front自加一:front = (front +1) % maxSize.

                (2)队尾rear自加一:rear = (rear + 1) % maxSize.

                (3)队列初始化:front == rear == 0.

                (4)队空条件:count == 0.

                (5)队满条件:count == maxSize.
        

标签:队尾,队列,入队,Chapter3,算法,front,数据结构,自加,rear
From: https://blog.csdn.net/HelloStrayer/article/details/144541934

相关文章

  • C++_数据结构-Map数据类型
    C++数据结构容器类:std::vector() map的内部结构是R-B-tree来实现的map:内部实现红黑树有序性,红黑树自动排序 unordered_map在C++11的时候被引入标准库哈希表HashMap散列表 skip-list跳表 #include<unordered_map>std::unnordered_ma......
  • 数据结构之栈和队列算法题
    一:有效括号数学了栈之后这一题就比较简单了。思路:1、左括号进栈2、右括号出栈匹配。完整代码:因为使用C语言写的,所以里面包含了栈的实现#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<stdbool.h>typedefintSTDataType;typedefstructStack{ ......
  • SM4加密算法介绍
    1.SM4算法介绍引用百度百科的介绍:SM4.0(原名SMS4.0)是中华人民共和国政府]采用的一种[分组密码标准,由国家密码管理局于2012年3月21日发布。相关标准为“GM/T0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥......
  • 智慧园区算法视频分析服务器网络摄像机供电正常,用IP搜索工具或中心管理软件搜索不到摄
    在使用网络摄像机进行监控时,确保摄像机能够被正确识别和连接至网络至关重要。然而,有时即使摄像机供电正常,使用IP搜索工具或中心管理软件仍然无法找到其IP地址。这种情况可能由多种因素引起,包括网络连接问题、IP设置不当或设备故障等。为了帮助用户快速定位和解决这些问题,以下是一......
  • 算法刷题_数组篇
    算法刷题Day3_数组篇_螺旋矩阵文章目录算法刷题Day3_*数组篇*_螺旋矩阵前言一、经典例题二、参考代码相关变体总结前言关键点:遍历时边界上的点,使用一个规则去处理每一条边,建议使用左闭右开。一、经典例题给你一个正整数n,生成一个包含1到n2所有元素,且元素......
  • 算法刷题_数组篇
    算法刷题笔记Day2_数组篇_长度最小的子数组文章目录算法刷题笔记Day2_*数组篇*_长度最小的子数组前言一、暴力解法二、滑动窗口法(推荐使用)三、相关例题补充水果成篮总结前言题目:给定一个含有n个正整数的数组和一个正整数s,找出该数组中满足其和≥s的长度最......
  • 非煤矿山算法智慧矿山一体机行人不行车违章识别算法如何实时监控与分析井下交通状况?
    在矿山安全管理中,确保井下交通的顺畅与安全是至关重要的。随着人工智能和深度学习技术的进步,行人不行车违章识别AI分析算法已经成为提升矿山安全管理水平的重要工具。这种算法能够实时监控和分析井下行人和车辆的行驶情况,有效预防和减少违章行为和事故的发生。本文将详细介绍这一A......
  • 算法网关视频分析网关高清网络球型摄像机接通电源后,不自检,无图像或伴有噪声的原因排查
    面对高清网络球型摄像机在接通电源后可能出现的不自检、无图像或伴有噪声的问题,及时而准确的诊断和解决措施至关重要。这些情况不仅影响监控效果,也可能暗示着设备或配置上的问题。以下是一些系统的排查步骤和解决方案,旨在帮助快速定位问题并恢复摄像机的正常运作。1、电源检查1......
  • AI智能算法视频分析网关接入的网络摄像机在通电后电源灯或网口等都不亮是什么原因?
    在安装和使用网络摄像机的过程中,我们可能会遇到一些技术问题,其中之一就是摄像机在通电后电源灯或网口等指示灯不亮。这种情况可能由多种原因引起,从摄像机本身的故障到供电问题都有可能。为了确保监控系统的稳定运行,了解这些潜在的问题及其解决方法是非常重要的。以下是一些可能导......
  • 12.7 每日总结(随机森林算法实现与测试)
    今天学习机器学习算法  一、实验目的深入理解随机森林的算法原理,进而理解集成学习的意义,能够使用Python语言实现随机森林算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样本......