队列的线性存储和链式存储实现

数据机构——线性表、堆栈和队列 线性表是由n(n≥0)个数据元素(节点)a₁, a₂, …元素类型相同;逻辑上相邻元素之间存在“前驱-后继”关系;长度n为线性表中元素的个数,n=0时为空表。顺序表需要定义存储空间大小(容量)和当前元素个数(长度)。// 顺序表定义100// 最大容量// 元素类型(可根据需要修改)// 存储元素的数组int length;// 当前长度// 初始化顺序表// 置空表# 顺序表定义self.data = [None] * max_size # 存储元素的列表。 阅读详情

队列是只允许在队尾插入元素,在队头删除元素的线性表。它有两种存储结构,即是顺序存储和链式存储结构。

链式存储结构实际上是一个同时带有首指针和尾指针的单链表。实现如下:

#include<iostream>
using namespace std;
const int MaxSize=20;

typedef struct
{
	int data[MaxSize];
	int font,rear;
}SqQueue;

void InitQueue(SqQueue &sq)
{
	sq.rear=sq.font=0;
}

int EnQueue(SqQueue &sq,int x)//入队
{
	if((sq.rear+1)%MaxSize==sq.font)
		return 0; 
	else
	{  
		sq.data[sq.rear]=x;
		sq.rear=(sq.rear+1)%MaxSize;//队头循环加1
		
		return 1;
	}
}
int DeQueue(SqQueue &sq,int &x) //出队列,将值保存在x当中
{
	if(sq.rear==sq.font)//队列为空
		return 0;
	else
	{
		
		x=sq.data[sq.font];
		sq.font=(sq.font+1)%MaxSize;
		return 1;
	}
}

int IsEmpty(SqQueue &sq) //判断队列是否为空
{
	if(sq.rear==sq.font)
		return 1;
	else 
		return 0;


}

int GetHead(SqQueue sq,int &x) //取队头元素
{
if(sq.rear==sq.font)//队列为空
		return 0;
else 
x=sq.data[(sq.font+1)%MaxSize];
return 1;

}

/*链式队列*/
typedef struct node
{
	int data;
	struct node *next;
}SNode;

typedef struct 
{
	SNode *font,*rear;
}LQueue;

void InitQueue(LQueue * &lq)
{
	lq=(LQueue *)malloc(sizeof(LQueue));
	lq->font=lq->rear=NULL;//初始情况
}

void EnQueue(LQueue * &lq,int x)
{
	SNode *s;
	s=(SNode *)malloc(sizeof(SNode));
	s->data=x;
	s->next=NULL;//新节点的初始化
	if(lq->font==NULL&&lq->rear==NULL) //若原来队列为空
	{
		lq->font=s;
		lq->rear=s;

	}
	else
	{
		lq->rear->next=s;
		lq->rear=s;  //将s插入到队列尾部
	}
}

int DeQueue(LQueue *&lq,int &x)
{
	SNode *p;
	if(lq->font==NULL)
		return 0;
	else
	{
		x=lq->font->data;
		p=lq->font;//保存要删除的结点
		if(lq->font==lq->rear) //判断是否只有一个节点
		{
			lq->font=lq->rear=NULL;
		}
		else
			lq->font=lq->font->next;
	}
	free(p);
	return 1;
}
int QueueEmpty(LQueue *&lq)//判断队列是否为空
{
if(lq->font==NULL&&lq->rear==NULL)
return 1;
else 
return 0;

}
void main()
{  
	SqQueue sq;
	int x;
	InitQueue(sq);

	for(int i=0;i<10;i++)
	{
		EnQueue(sq,i);
		cout<<i<<" ";
	}
	 cout<<endl;

	for(int j=0;j<10;j++)
	{
		DeQueue(sq,x);
		cout<<x<<" ";
	}
	cout<<endl;
  cout<<"/***********链式队列**************/"<<endl;
LQueue *lq;
	
	InitQueue(lq);

	for(int i=0;i<20;i++)
	{
		EnQueue(lq,i);
		cout<<i<<" ";
	}
	 cout<<endl;

	for(int j=0;j<20;j++)
	{
		DeQueue(lq,x);
		cout<<x<<" ";
	}
	 
}


队列 c语言实现 1.导言 栈和队列是两种常见的线性表,栈因为只能在表的一端进行插入和删除,这种结构决定了栈后进先出的特性,队列也是一种受限的线性表,队列只能在表的一端进行插入,在表的另一端进行删除。允许插入的一端叫做队尾(rear),允许删除的一端被称之为队头(front)。这种结构决定了队列具有先进先出(FIFO)的特性.对队列来说,在我们日常生活中,随处可见。去食堂排队打饭,最早排队的人,最先拿着饭菜离开, 阅读详情

相关推荐

伺服电机入门01

编码器输出 旋转信号 , 接收端: 使用ADC 捕捉旋转信号 ,转成数字信号,驱动器得到数字处理, 因为信号量是模拟信号, mcu mpu 等芯片通常内部处理是数字,通过adc 得到数字cpu 才能识别 传输过来的pos 等信息。IPM 芯片示例, IRAM256A 这个芯片已经停产,有换新的,,下面示例来自stmbl 高功率方案,4 步进电机 有全步控制,半步控制 ,微步控制,FOC控制,步进电机也是可以做伺服系统的。以下面几种信号是可以细分,也就是通过细分增加编码器的分辨率,

qq_25160559的博客 969

线性表链式储存(图书管理系统)

线性表链式储存(图书管理系统)

q322359的博客 3442

STM32F103C8T6通过ESP8266连接阿里云物联网平台(附代码)

STM32F103C8T6连接阿里云物联网平台(1)—阿里云lot Studio控制 Web开发 分享一下自己使用stm32f103c8t6通过ESP_01模块连接阿里云物联网平台,实现温湿度上传和控制命令下达的过程,能力有限,用的是最简单的方法,如有错误,多多担待。 一、硬件选型 1、 stm32f103c8t6 2、ESP_01 wifi模块 3、其他 二、硬件连接 WSP_01 STM32F103C8T6 RXD PA2 TXD PA3 RES PA4 VCC 3.3

weixin_A13253323604 3万+

数据结构——线性表链式存储结构

链式存储结构

m0_73344878的博客 2490

Zotero on Mac: 高效文献管理与引用指南

本文为Mac用户提供了一份全面的Zotero高效文献管理与引用指南。从安装配置、文献收集管理、PDF深度阅读与笔记,到在Word中无缝插入引用和生成参考文献,详细讲解了核心工作流。同时推荐了ZotFile、Better BibTeX等必备插件,并介绍了利用同步与WebDAV实现跨设备无缝衔接的方法,助力研究者构建个人数字知识库,极大提升学术研究效率。

weixin_29281941的博客 1176

前端宝典之七:React性能优化实战精华篇

本文主要讲解实战项目中React性能优化的方法,主要分为三个大的方面:减少不必要的组件更新、组件优化以及tree-shaking,共11个方法

franktaoge的博客 1899

基本数据结构底层原理——线性存储和链式存储

Java基本数据结构底层原理,如何模拟实现顺序表和链表,以及栈和队列的联系

weixin_71020872的博客 1065

三极管、MOS管和晶体管综合对比——《器件手册--三极管、MOS管和晶体管》

IGBT(Insulated Gate Bipolar Transistor,绝缘栅双极型晶体管)是一种复合全控型电压驱动式功率半导体器件,结合了MOSFET的高输入阻抗、开关速度快的优点和双极型晶体管(BJT)的低导通压降、高电流密度的优点。例如,在NPN型三极管中,当基极电流增加时,集电极电流会按照一定的比例(放大倍数β)增加,这个比例通常在几十到几百之间。在NMOS管中,当栅极相对于源极的电压(Vgs)小于开启电压(Vth)时,漏极和源极之间没有导电沟道,电流无法通过,处于截止状态。

XU157303764的博客 2879

基于链式存储结构的图书信息表的创建和输出

描述 定义一个包含图书信息(书号、书名、价格)的链表,读入相应的图书数据来完成图书信息表的创建,然后统计图书表中的图书个数,同时逐行输出每本图书的信息。 输入 输入n+1行,其中前n行是n本图书的信息(书号、书名、价格),每本图书信息占一行,书号、书名、价格用空格分隔,价格之后没有空格。最后第n+1行是输入结束标志:0 0 0(空格分隔的三个0)。其中书号和书名为字符串...

aanwlpv8704的博客 2315

WorkBuddy 技能指南:基础办公与文档处理

WorkBuddy 不仅仅是一个对话工具——它通过技能(Skills)系统,将通用 AI 助手转变为具备专业领域能力的智能助手。每个技能都是一套经过精心设计的"能力包",包含专业知识、工作流程和专用工具。本文聚焦于文档处理类技能——这是日常工作中使用频率最高、最实用的能力集合。

u011186532的专栏 703

详解RT-DETR网络结构/数据集获取/环境搭建/训练/推理/验证/导出/部署

本文给大家带来是利用RT-DETR模训练自己的数据集,RT-DETR是一种新提出的目标检测模型,它利用的自注意力机制来处理图像数据。不同于YOLO通过连续的卷积层直接对图像区域进行分析,RT-DETR采用Transformer架构中的自注意力机制,这允许模型更有效地理解图像中不同部分之间的关系。这种方法使得RT-DETR在处理图像中的复杂场景和多对象环境时,能够展现出更高的准确性和效率。此外,RT-DETR在保持高精度的同时,也针对实时处理进行了优化,使其适合需要快速响应的应用场景。

Snu77的博客 6万+

队列的两种存储方式的介绍与实现(后续)

简介 队列分为顺序存储结构和链式存储结构,链式存储结构其实就是线性表的单链表,只是只能在对头出元素,队尾进元素而已。从之前实现的队列的顺序存储结构中 我们可以看到他的缺点,我们为了避免“假溢出”就实现循环队列的顺序结构,但是循环队列必须指定出队列的长度,所以说它并不完美。当然我们就可以用链式存储结构 的方式来弥补上述的不足。 实现分析 链表是有一个个节点连接而成,每个节点就是

well的博客 7834

PCL 动态半径滤波【2025最新版】

使用PCL实现的2022年最新SCI论文——【Design of Dust-Filtering Algorithms for LiDAR Sensors Using Intensity and Range Information in Off-Road Vehicles】 一文中提出用于自动驾驶点云剔除粉尘、雨雪等影响因素导致的噪声点滤波算法。

点云侠的博客 1472

java 链式存储 队列_Java实现队列的线性存储和链式存储

队列(Queue)​ 队列是一种具有一定操作约束的线性表,它的插入和删除操作都只能在一端进行,数据插入叫做入队,数据删除称为出队,它是一种典型的先进先出(FIFO)的结构。抽象数据类型描述​ 数据对象集:一个有0个或多个元素的线性表。​ 操作集:Item 代表数据元素类型boolean isEmpty() 判断队列是否为空int length() 返回队列的大小void addQueu...

weixin_39860946的博客 220

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

队列的顺序存储与链式存储

队列就是我们日常生活中的排队,队列也是一种线性表,与堆栈相反,队列的入列必须在队尾,出列必须在队头。与一般的线性表不同,队列的操作只能在两端,一端插入一端删除,先进先出。(堆栈只能在一端进行操作,所以先进后出)。队列的存储方式这里讲两种,首先第一种是用数组的方式实现队列的顺序存储。用一个一维数组来存储队列的数据,对队列执行操作时,插入和删除分别是对数组头和数组尾进行操作,所以还要有两个变量来指示数...

大力海棠的博客 4924

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数据结构——线性结构篇(线性表、堆栈、队列)

初级数据结构的线性结构基本知识和相关代码

m0_66881249的博客 1683

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

栈的链式存储结构与队列的链式存储结构

因为我们已经学过了线性表的链式存储结构,所以我们可以基于线性表的链式存储结构来学习栈的链式存储结构队列的链式存储结构,说到这里必须要提一下栈和队列存储元素的特点是什么?当然是栈先进后出,队列先进先出咯,学过栈和队列的甚至听说过的都知道,还用说吗。。。。。。同时要实现栈的链式存储我们必须要实现我们之前所写的栈的接口stack,实现队列的链式存储结构需要实现我们之前所写的队列中的接口Queue。 栈...

qq_44941119的博客 459

动态链表3队列的链式存储结构(LinkedQueue实现)

1.队列的链式存储结构定义。 队列的链式存储结构,其实就是线性表的单链表。这里的队列同样的具备头结点指针head,head位置不存放元素。尾指针rear,rear位置存放元素。 空队列的判断,和线性表一样,当元素总和为空时或者头结点的下一跳指向null,也就是head==rear。 队列的元素进出特点就和栈的链式不一样了,队列的是先进先出。 队列...

zh_tnis的博客 358

队列的顺序和链式存储实现

队列(Queue):具有一定操作约束的线性表 插入和删除操作:只能在一端插入,而在另一端删除。 类型名称:队列(Queue) 数据对象集:一个有0个或多个元素的有穷线性表 操作集:长度为MaxSize的队列Q € Queue,队列元素item€ ElementType Queue CreateQueue(int MaxSize):生成长度为MaxSize的空队列; ...

weixin_30772105的博客 200

线性队列和链式队列

两种实现方式均提供了创建队列、入队、出队和判空操作,C++ 版本使用类模板支持泛型编程。

bookish_2010_prj的专栏 396

C语言数据结构队列(链式存储)

数据结构队列(链式存储)实现 因为队列是一种特殊的线性表,所以本文借助链式线性表的创建做进一步的修改 1、链式线性表创建,插入,删除等API编写(chain_linear_list.c) /***************************************************** > File Name : test.c > Author : xboss > Mail : 2366006417@qq.com > ..

weixin_43999800的博客 619

队列的两种存储

线性表有顺序存储和链式存储,队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,而进行删除操作的端称为队头。和栈一样,队列是一种操作受限制的线性表,同样也有两种存储方式。 队列的顺序存储 一个有n个元素的队列,那么就需要一个大于n的数组来作为顺序存储的队列,并且队列的所有元素都存储在数组的前n个单元。这里n就取三来继续说明。 ...

m0_63989549的博客 1725

数据结构——队列的链式储存实现(C语言)

队列(Queue)是一种特殊的线性表,它具有先进先出(FIFO, First In First Out)的特性。在队列中,数据的插入操作被称为入队(Enqueue),数据元素的插入只能在队列的一端进行,这一端通常被称为队尾(Rear);相应地,数据的删除操作被称为出队(Dequeue),数据元素的删除只能在队列的另一端进行,这一端被称为队首(Front)。和。接下来讲解的是如图所示,我们可以将链表的“头节点”和“尾节点”分别视为“队首”和“队尾”,规定队尾仅可添加节点,队首仅可删除节点。

xb1132的博客 562

栈和队列的顺序和链式存储结构

栈和队列 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。 栈的顺序存储结构 typedef struct { ElemType *base; // 指向栈底的指针变量 ElemType *top; // 指向栈顶的

姜守威的博客 2591

数据结构 -- #栈和队列的定义和基本实现

栈和队列都是一种操作受限的线性表,栈只能在栈顶插入,删除。其特点就是先进后出,类似于压子弹入匣的过程而队列只能在队头删除,队尾删除。其特点是先进先出。🌻编写本篇文章目的是笔者想以输出的形式进行学习,顺便记录学习点滴🌻😇 本篇文章存在多处不足,如有修改意见,可以私信或者评论哦,还望海涵 😇本篇文章部分内容来自于 王道-数据结构。

mengzh的博客 1265

数据结构(三)——栈和队列

栈和队列基本知识点汇总(by C)1 栈1.1 栈的概念1.2 栈的顺序存储表示1.2.1 栈的动态顺序存储表示1.2.1.1 实现要点:1.2.1.2 实现code栈的类型定义栈的初始化元素进栈元素出栈1.2.2 栈的静态顺序存储表示1.2.1.1 实现要点:1.2.2.2 实现code栈的类型定义栈的初始化元素进栈元素出栈1.3 栈的链式存储表示1.3.1 节点表示1.3.2 链栈的基本操作实现初始化入栈出栈1.4 栈的应用数制转换括号匹配栈与递归调用2 队列2.1 队列的顺序表示实现2.1.1 队列顺

fancy的博客 1068
上一篇: 双向链表的相关操作C++实现
下一篇: 二叉树的创建以及遍历
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值