24.8.9.11数据结构|链栈和队列

news2025/2/28 20:11:30

链栈

1、理解

实际上是一个仅在表头进行操作的单链表,头指针指向栈顶结点头结点,以下恋栈均指带头结点的链栈.

2、 基本操作

1、定义结构:节点含有数据域和指针域

2、初始化操作:建立一个带头结点的空栈

3、取栈顶元素操作:取出栈的栈顶元素,将栈中第一个节点的值送到e所指向的内存单元,不删除栈顶结点

4、求栈长操作:从栈顶开始统计栈中元素个数直到栈底为止

5、入栈操作:将值为X的数据元素插入栈中使X成为新的栈顶元素

(先创建一个新结点,其数据域的值为X,然后将该结点插入到头节点之后作为栈顶结点)考虑空间申请是否成功

6、出栈操作:删除S的栈顶元素(先将栈S的栈顶结点的值送到一所指的内存单元然后删除栈顶结点)考虑栈空

7、栈空操作:判断栈是否为空

8、输出栈:输出自栈顶到栈底的元素值

 3、代码

 4、课后练习

例题1

编写算法利用栈将带头结点的单链表逆置

例题2

设计一个算法判断一个字符串是否对称若是则返回一否则返回零

 队列

顺序队列8.11

1、理解

顺序队列,即队列的顺序存储结构,就是嗯嗯利用一组地址连续的存储单元依次存放从对头到队尾的数据元素,同时利用两个变量分别记录当前队列中队头元素和队尾元素的位置。

特殊的线性表,只允许在一端插入另一端删除,队尾插入,队头删除。对头指针和队尾指针并不一定是指针变量,也可以是下标变量。在用下标变量来描述队列时,在初始化空队列时,队头指针和队尾指针的值都为零。当当front==rear时,队列为空,当rear==Maxsize时,队列为满。

入队时尾指针rear加一,出队时头指针front加一

2、基本操作(顺序队列、循环队列)

1、顺序队列的类型定义:基地址、队头指针、队尾指针

2、初始化操作:构建一个空队列

3、求队列长度操作:返回队列的元素个数

4、取队头元素操作:通过一返回队列的队头元素值

5、入队操作:将值为X的元素插入到队列中使X成为新的队尾元素

6、出队操作:删除队列中的队头元素同时将队头元素值通过E代回,原队列中的第二个元素成为新的队头元素。

7、判断队空操作:判断队列queue是否为空若队列为空则返回一否则返回零

8、输出队列操作:从对头到队尾依次输出队列queue中的所有元素

代码

队列也是一个线性表其存储结构也分为顺序存储和链式序存储两种分别称为顺序队列和链队列

循环队列

1、理解

为了解决入队列操作产生假溢出现象,可以把顺序队列从逻辑上看成是一个环,即当队列为指针或队头指针达到最大下标值Maxsize时,再从下标为零的位置开始举,这种队列称为循环队列。、

循环队列中队头指针和队尾指针的后移可以利用除最大下标值取余的运算来实现

队头指针后移操作:

front=(front+1)%MAXQSIZE;

队列长度的计算公式为:

( rear+Maxsize-front)%Maxsize

链式队列

 实际上是一个带头指针和尾指针的单链表。

基本操作

1、结构定义

2、初始化操作

3、求队列长度操作

4、判断队列为空

5、取队头元素

6、入队列操作

7、出队操作

8、输出队列操作

代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037291.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis_springboot与mybatis-plus

一 Mybatis_springboot MyBatis 是一个流行的持久层框架,可以与 Spring Boot 无缝集成。下面是如何在 Spring Boot 项目中使用 MyBatis 的基本步骤。 1. 创建 Spring Boot 项目 你可以使用 Spring Initializr 创建一个新的 Spring Boot 项目。选择以下依赖项&…

只要15分钟,TiDB国产化数据库快速入门,简单高效

TiDB国产化数据库快速入门 1.TiDB服务部署2.TiDB服务核心组件说明2.1 PD(Placement Driver)- 交通指挥中心2.2 TiDB(SQL Layer)- 餐厅前台2.3 TiKV(分布式存储层)- 仓库存储系统2.4 TiFlash(列式…

java数据库连接池介绍与使用

一. 使用数据库连接池有什么优势 在程序开发的过程中如果不使用数据库连接池 , 可能会导致我们每执行一次sql语句 , 就会向数据库发送请求链接与断开 , 这会消耗我们的内存资源 1. 资源重用更佳 减少开销:数据库连接池通过复用现有的数据库连接,显著减…

冒泡,选择,插入,希尔,快速,归并

冒泡&#xff0c;选择&#xff0c;插入&#xff0c;希尔&#xff0c;快速&#xff0c;归并 选择类的排序&#xff1a;选择排序&#xff0c;堆排序 交换类的排序&#xff1a;冒泡&#xff0c;快排 #include <stdio.h> #include<stdbool.h> #include<stdlib.h&…

Hidden Marlov Model(HMM)

一、Model 1、将声学特征设为X&#xff0c;经过语音识别得到的tokens设为Y&#xff0c;目标是找到通过X得到Y的最大概率&#xff0c;可以通过概率公式改变为 分为两个概率 2、将tokens序列Y转化为states序列S&#xff0c;声学特征分得更细 3、从states到声学特征的过程 二、HM…

力扣面试经典算法150题:罗马数字转整数

罗马数字转整数 今天的题目是力扣面试经典150题中的数组的简单题: 罗马数字转整数 题目链接&#xff1a;https://leetcode.cn/problems/roman-to-integer/description/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述 将一个罗马数字转换成相应的整数。输入是一…

面向未来的低代码开发:人工智能与机器学习的结合

引言 在当今飞速发展的数字化世界中&#xff0c;技术的进步正以前所未有的速度改变着各个行业的运营方式。其中&#xff0c;低代码开发和人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;这两大技术的结合&#xff0c;正在推动着软件开发领域的又一次变…

身份证OCR识别接口如何用Java调用

一、什么是身份证OCR识别接口&#xff1f; 身份证OCR识别接口又叫身份证识别&#xff0c;身份证图像识别&#xff0c;身份证文字识别&#xff0c;即自动识别和提取身份证上的文字和数字信息。它可以通过图像处理和模式识别算法&#xff0c;将身份证中的姓名、性别、民族、出生…

我们从过去一年的大模型构建过程中学到的经验

当下正是使用大型语言模型&#xff08;LLM&#xff09;构建应用的好时机。过去一年&#xff0c;LLM 已经发展到了足够用于实际应用的水平。LLM 的进化速度与社交媒体层出不穷的演示应用&#xff0c;将在 2025 年吸引对 AI 领域的约 2000 亿美元投资。LLM 的门槛也很低&#xff…

Dbeaver 直连数据库下载数据到本地

参考文章&#xff1a;win11中DBeaver超详细下载与数据库MySQL 要使用 DBeaver 直接连接数据库并将数据下载到本地&#xff0c;您可以按照以下步骤操作&#xff1a; 1. 连接到数据库 打开 DBeaver。点击左上角的“Database”菜单&#xff0c;选择“New Database Connection”…

【数学建模】【2024国赛前必看内容】python基础速成教学及常用python代码包

一、内容介绍 Python在各个编程语言中比较适合新手学习&#xff0c;Python解释器易于扩展&#xff0c;可以使用C、C或其他可以通过C调用的语言扩展新的功能和数据类型。 Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库&#xff0c;提供了适用于各个主要系统…

<Qt> 系统 - 文件

目录 一、Qt文件概述 二、输入输出设备类 三、文件读写类 四、文件和目录信息类 一、Qt文件概述 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库&#xff0c;提供了跨平台的文件操作能力。Qt 提供了很多关于文件的类&#xff0c;通过这些类能够对文件系统进行操…

Linux centos stream 9命令及源码

学过linux操作系统的人,对文件、命令比较熟悉。最多的操作是用命令处理文件。 随着学习的深入,会提出疑问:命令长什么样? 出于好奇,会找到命令存放的地方,用cat命令看一下,结果可想而知。 我们知道,命令分内部命令和外部命令,存放在不同的位置。外部命令就是一个可执…

Emacs1.0版本之重要特性及用法实例(一百五十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列…

【Java 数据结构】LinkedList介绍

LinkedList介绍 回顾ArrayList类链表链表是什么链表的分类单向无头链表模拟实现初始化与基本方法查询修改增加删除 双向无头链表模拟实现初始化与基本方法查询修改增加删除 LinkedList类LinkedList类是什么回顾List接口LinkedList使用构造方法常用方法 LinkedList的遍历ArrayLi…

Windows下编译安装PETSc

本文记录在Windows下使用MinGW-w64编译安装PETSc的流程。 0、环境 操作系统Windows 11MSYS2msys2-x86_64-20240507 1、开发环境 首先&#xff0c;下载并安装MSYS2&#xff0c;然后编辑PATH环境变量&#xff0c;添加mingw64相关路径&#xff1a;C:\msys64\mingw64\bin。 然后…

鼠标为什么要放在鼠标垫上才好用?/ 鼠标的工作原理

原创 OREO 力学科普 在数字化时代&#xff0c;鼠标已经成为我们与计算机交互不可或缺的工具。它不仅提高了工作效率&#xff0c;也丰富了我们的数字生活。鼠标总是能精准地感应到人手的移动方向和距离&#xff0c;从而到达人指定的位置&#xff0c;给我们的计算机操作过程带来…

【区块链+乡村振兴】链上云仓智慧动产监管平台 | FISCO BCOS应用案例

2021 年初 ,《中共中央国务院关于全面推进乡村振兴加快农业农村现代化的意见》将“乡村振兴”的重要性提升 到前所未有的战略高度。而随着科技与金融的深度融合&#xff0c;金融行业亦开始步入大数据、云计算、人工智能、区块 链的新技术发展。启动金融科技赋能乡村振兴示范工程…

企业级营销中心应用架构设计

营销中心依托大数据和数据分析应用,搭建灵活可扩展的系统架构,在客户分群、客户画像、客户标签库及模型工厂的基础上,建立营销全流程管理,包括营销活动的发起、执行、反馈和评价,助力银行实现以数据驱动的精准营销模式。此外,还可提供丰富的场景营销解决方案,协助银行打…