PTA 双端队列

浙大版《数据结构(第2版)》题目集3.13 双端队列 (25分) 双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可以(也只能)在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列,请编写例程实现下列操作: Push(X,D):将元素X插入到双端队列D的头; Pop(D):删除双端队列D的头元素,并返回; Inject(X,D):将元素X插入到双端队列D的尾部; Eject(D):删除双端队列D的尾部元素,并返回。 函数接口定义: bool Push( ElementType X, Deque D ); E 阅读详情

一.定义
双端队列是限定插入和删除操作在表的两端进行的线性表,是一种具有队列和栈的性质的数据结构。
双端队列中的元素可以从两端进队和出队,其限定插入和删除操作在表的两端进行。

二.例题
双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可以(也只能)在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列,请编写例程实现下列操作:

Push(X,D):将元素X插入到双端队列D的头;
Pop(D):删除双端队列D的头元素,并返回;
Inject(X,D):将元素X插入到双端队列D的尾部;
Eject(D):删除双端队列D的尾部元素,并返回。

bool Push( ElementType X, Deque D );
ElementType Pop( Deque D );
bool Inject( ElementType X, Deque D );
ElementType Eject( Deque D );

其中Deque结构定义如下:

typedef int Position;
typedef struct QNode *PtrToQNode;
struct QNode {
    ElementType *Data;      /* 存储元素的数组   */
    Position Front, Rear;   /* 队列的头、尾指针 */
    int MaxSize;            /* 队列最大容量     */
};
typedef PtrToQNode Deque; 

注意:Push和Inject应该在正常执行完操作后返回true,或者在出现非正常情况时返回false。当Front和Rear相等时队列为空,Pop和Eject必须返回由裁判程序定义的ERROR。

代码

bool Push( ElementType X, Deque D ){
	if((D -> Rear + 1) % D -> MaxSize == D -> Front){
		return false;
	}else{
		D -> Front = (D -> Front - 1 + D -> MaxSize) % D -> MaxSize;//确保下标为正 
		D -> Data[D -> Front] = X;
		return true;
	}
}
ElementType Pop( Deque D ){
	if(D -> Front == D -> Rear){
		return ERROR;
	}else{
		ElementType P = D -> Data[D -> Front];
		D -> Front = (D -> Front + 1) % D -> MaxSize;
		return P;
	}
} 
bool Inject( ElementType X, Deque D ){
	if((D -> Rear + 1) % D -> MaxSize == D -> Front){
		return false;
	}else{
		D -> Data[D -> Rear] = X;
		D -> Rear = (D -> Rear + 1) % D -> MaxSize;
		return true;
	}
}
ElementType Eject( Deque D ){
	if(D -> Front == D -> Rear){
		return ERROR;
	}else{
		D -> Rear = (D -> Rear - 1 + D -> MaxSize) % D -> MaxSize;
		return D -> Data[D -> Rear];
	}
}

注意点:D -> Front 和 D -> Rear - 1时要保证下标为正 -1过后要+Q -> MaxSize 再对Q -> MaxSize进行求余操作

【ds学习记录】栈与队列 PTA 习题3.13 双端队列 题目: 双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可以(也只能)在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列,请编写例程实现下列操作: Push(X,D):将元素X插入到双端队列D的头; Pop(D):删除双端队列D的头元素,并返回; Inject(X,D):将元素X插入到双端队列D的尾部; Eject(D):删除双端队列D的尾部元素,并返回。 函数接口定义: bool Push( ElementType X, Deq 阅读详情

相关推荐

数据结构笔记:双端队列

原文地址 分类目录——数据结构笔记 双端队列(deque,double-ended queue),是一种具有队列和栈的性质的数据结构。 双端队列中每一端,都可以进行存入和取出,去其中一段,都像一个栈一样。 存取也只限定在两端,不能在中间 双端队列的实现 通过线性表实现 class Dequeue(object): def __init__(self): '''初始化一个空队列''' self.__list = [] def add_front(self, item): '''从队列首添加''' self.__lis

数据结构--双端队列

双端队列(Double-ended Queue,简称Deque)是一种具有队列和栈特性的数据结构,可以在队列的两端进行插入和删除操作。双端队列允许从前端和后端同时进行插入和删除操作,因此可以称为“两端都可以进出的队列”。双端队列的实现方式有多种,包括使用数组、链表等数据结构。具体的实现方式可以根据不同的需求和场景选择合适的方式。

m0_60593173的博客 9863

cellranger安装以及使用

接受cellranger count的输出数据,将同一组的不同测序样本的表达矩阵整合在一起,比如tumor组原来有4个样本,PBMC组有两个样本,现在可以使用aggr生成最后的tumor和PBMC两个矩阵,并且进行标准化去掉测序深度的影响。但是由于病毒基因组太小了,且注释结果只有CDS没有exon,所以曲线救国,将CDS整体替换为exon,也不进行过滤了,直接下一步。虽然安装完毕,但是现在要运行cellranger的话需要在终端输入cellranger的整个路径。自动执行这个命令,需要将“

m0_59974475的博客 9397

PTA之双端队列

题目描述 双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可以(也只能)在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列,请编写例程实现下列操作: Push(X,D):将元素X插入到双端队列D的头; Pop(D):删除双端队列D的头元素,并返回; Inject(X,D):将元素X插入到双端队列D的尾部; Eject(D):删除双端队列D的尾部元素,并返回。 //函数接口定义: bool Push( ElementType X, Deque D

David_house的博客 2874

CANoe.Diva实战:基于CDD的UDS诊断自动化测试全流程解析

本文详细解析了使用CANoe.Diva进行基于CDD的UDS诊断自动化测试的全流程,包括环境搭建、CDD文件配置、测试范围设置、用例生成与验证、CANoe集成测试及报告分析。通过实战经验分享,帮助工程师快速掌握诊断自动化测试技巧,提升测试效率与质量。

weixin_29258297的博客 219

MAX30102心率血氧传感器:从原理到实践的可穿戴健康监测方案

本文深入解析MAX30102心率血氧传感器的工作原理及在可穿戴健康监测中的实践应用。通过反射式光电容积脉搏波(PPG)技术,该传感器能精准测量心率和血氧饱和度,具备低功耗、高抗干扰等优势。文章详细介绍了信号处理算法、硬件连接技巧及创新应用场景,为开发者提供全面的解决方案。

weixin_29184371的博客 284

浙大版《数据结构》6-8 双端队列 (25分)详解版

6-8双端队列(25分) 双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可以(也只能)在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列,请编写例程实现下列操作: Push(X,D):将元素X插入到双端队列D的头; Pop(D):删除双端队列D的头元素,并返回; Inject(X,D):将元素X插入到双端队列D的尾部; ...

qq_43813140的博客 2178

基于深度学习的堰塞坝表层颗粒物质识别研究

本文提出一种基于深度学习的堰塞坝表层颗粒物质智能识别方法,针对颗粒分布散乱、背景复杂的问题,采用"大颗粒逐个识别、密集小颗粒分块识别"策略。结合Mask R-CNN、SLIC和AlexNet构建识别模型,通过无人机影像实现自动识别。实验表明该方法精度超过90%,具备迁移能力。文章提供了Python实现代码,涵盖数据预处理、SLIC分割、模型构建(Mask R-CNN和AlexNet)及训练流程,为堰塞坝应急抢险提供技术支持。

huanghm88的专栏 181

【数据结构】双端队列

定义 deque(double-ended queue,双端队列)是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出。 结构示意图 首先每个节点包含一个存储的元素和一个指向下一节点的指针。整个双端队列则只包含一个头(head)节点的指针和一个尾(tail)节点的指针。头节点指向链表的第一个元素,尾节点指向最后一个元素。 定义的代码 struct Node{ T elem; struct Node * next; }; typedef struct Deque{ struct Node

SWELER的博客 1286

1000Base-T1协议解读(基于802.3bq-2016 和Test Suite)

1000Base-T1是由一对双绞线实现全双工传输的以太网标准,采用PAM3编码方式(-1,0,1),编码后的实际传输符号速率为750Mbps。该标准的车载最大传输距离可达15米,主要应用于汽车产品开发过程。测试过程示波器要求带宽≥2G,采样率≥7.5Gbps,网分带宽≥1G。

qflook的博客 5335

Codex 100个真实案例 - 用AI做股票K线分析工具(技术指标全自动)

本案例将用 Codex 从零搭建一个完整的股票 K 线分析工具。通过自然语言驱动,我们让 AI 自动完成股票数据获取(akshare)、K 线图绘制(mplfinance + ECharts)、技术指标计算(MA/EMA/MACD/RSI/KDJ/布林带)、买卖信号提示(金叉/死叉、超买超卖)、多股对比分析、Web 可视化界面(Flask + ECharts)、PDF 报告生成以及定时监控邮件推送等全套功能。全程用自然语言指令驱动 Codex,零手写代码实现专业级量化分析平台!

yueyeguzhuo的专栏 874

pta 双端队列

这个题有点小坑,头插尾插先挪动指针还是先插入不一样,当然这个双端队列是在是循环队列的基础上,循环队列具体不说了。删除时,头部是删除的当前指针的值,而尾部删除是删除前移的值 bool Push( ElementType X, Deque D )//将元素X插入到双端队列D的头; { if((D->Rear + 1) % D->MaxSize == D->Front)//队列...

corleoen的博客 1073

RV1126笔记二十七:MetaRTC6移植

MetaRTC6移植

6038

PTA:双端队列

双端队列(deque)是一种允许在两端进行插入和删除操作的数据结构,结合了队列和栈的特性。与普通队列相比,双端队列的操作更加灵活,支持在头部和尾部进行元素的插入和删除。本文通过顺序存储方式实现了双端队列的基本操作,包括Push(头部插入)、Pop(头部删除)、Inject(尾部插入)和Eject(尾部删除)。通过环形缓冲区实现,避免了“假溢出”问题,并使用取模运算处理边界条件。与普通队列相比,双端队列的应用场景更广泛,如滑动窗口、回文检查等,但实现复杂度也更高。

ly1012_的博客 801

【AUTOSAR-E2E】-1.4-详述E2E Transformer解决方案

共13页精讲 目录 1“Data Transformation”介绍 1.1 基于SOME/IP Transformer 1.2 基于COM Based Transformer 2 ComXf(COM Based Transformer)介绍 2.1 ComXf(COM Based Transformer)功能规范 2.2 ComXf(COM Based Transformer)提供的服务 2.3 配置注意事项 3 E2EXf(E2E Transformer)介绍 3.1 E2EX...

「汽车电子助手」的博客 4701

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

6-3 双端队列 PTA

其中Deque/* 整型下标,表示元素的位置 *//* 双端队列的容量 *//* 双端队列的队首指针,初始化为0 *//* 双端队列的队尾指针,初始化为0 *//* 存储数据的数组 */函数接口定义中,QElemSet是用户定义的数据类型,例如 int、double 或者 char 等。EnQueue和Inject应该在正常执行完操作后返回 true,或者在出现非正常情况时返回 false。当front和rear相等时队列为空,DeQueue和Eject必须返回由裁判程序定义的。

shenshayu的博客 311

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

pta双端队列

习题3.13 双端队列。

niumannn的博客 471

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VC中sqlite的使用

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

PTA 双端队列 数据结构

双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可以(也只能)在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列,请编写例程实现下列操作: Push(X,D):将元素X插入到双端队列D的头; Pop(D):删除双端队列D的头元素,并返回; Inject(X,D):将元素X插入到双端队列D的尾部; Eject(D):删除双端队列D的尾部元素,并返回。 函数接口定义: bool Push( ElementType X, Deque D ); El

mingw11的博客 2127

PTA复习 习题3.13 双端队列

PTA复习 习题3.13 双端队列 双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可以(也只能)在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列,请编写例程实现下列操作: Push(X,D):将元素X插入到双端队列D的头; Pop(D):删除双端队列D的头元素,并返回; Inject(X,D):将元素X插入到双端队列D的尾部; Eject(D):删除双端队列D的尾部元素,并返回。 函数接口定义: bool Push( Element

weixin_44640697的博客 537

PTA-双端队列-基于循环数组

队列常用的存储结构为顺序存储和链式存储,本篇基于顺序存储结构中的循环数组讲解循环数组是一种逻辑上形成闭环的数组存储结构,与传统数组不同主要在于循环数组的索引 index。,我们应该将函数分为两类,一类向数组右边移动即:循环数组的增加,一类向左边移动即:循环数组的减少。若不满,再进行头插操作即:先移动索引位置再接收。给出双端队列的头插入,头删除,尾插入,尾删除。回到循环数组起始位置,从而实现逻辑上的循环。(头插函数)一致,不为空进行的操作与。(头删函数)一致,不为空进行的操作与。是循环数组的长度,当。

2401_89009461的博客 673

PTA 双端队列 (25分)

双端队列(deque,即double-ended queue的缩写)是一种具有队列和栈性质的数据结构,即可以(也只能)在线性表的两端进行插入和删除。若以顺序存储方式实现双端队列,请编写例程实现下列操作: Push(X,D):将元素X插入到双端队列D的头; Pop(D):删除双端队列D的头元素,并返回; Inject(X,D):将元素X插入到双端队列D的尾部; Eject(D):删除双端队列D的尾部元素,并返回。 基本分析: 1.双端队列必定是个循环队列,判断队空、队满、front和rear加减的时候,注意

qq_27108973的博客 1252

PTA----双端队列

其中Deque/* 存储元素的数组 *//* 队列的头、尾指针 *//* 队列最大容量 */ };Push和Inject应该在正常执行完操作后返回true,或者在出现非正常情况时返回false。当Front和Rear相等时队列为空,Pop和Eject必须返回由裁判程序定义的ERROR。

xz857的博客 453

pta c语言段错误,【数据结构】PTA网站上的一个双端行列题

当前位置:我的异常网» C语言»【数据结构】PTA网站上的一个双端行列题【数据结构】PTA网站上的一个双端行列题www.myexceptions.net网友分享于:2015-10-08浏览:0次【数据结构】PTA网站上的一个双端队列题在下学生,在做PTA上作业时候,有一个双端队列的问题,做了之后在自己电脑上能运行,可是提交上去说是段错误。问题:A"deque"isadatas...

weixin_39797912的博客 278

双端队列(双链表实现)PTA 3-1 Deque

双端队列(双链表实现)PTA 3-1 Deque ;};双端队列中有指向首尾的两个指针。注意,Front与头节点地位相同,不存元素。每个节点包括数据Element 和 Next,Last指针,分别指向下一个节点和上一个节点。

qq_59183443的博客 1074

PTA-习题3.13 双端队列

一开始Rear,Front一直加,然后观看了许多人的代码才知道了标准写法。写完后,样例测试说我运行超时,但提交了答案正确,我不李姐。

2201_75444446的博客 712
上一篇: PTA 合并递增整数序列
下一篇: Java 数组
ZoeLandia
博客等级 码龄6年 734粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值