题目链接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101313244863737856

题意:实现双段队列的队首出队、入队以及队尾出队、入队4个操作

思路:

根据裁判测试程序我们可以发现,在CreateDeque函数中将MaxSize加了1,而且这里的MaxSize定义的是最大容量,所以这是一个循环队列,且为了避免Front=Rear时会出现表示队空和队满2种情况的二义性,需要将Rear表示队尾的下一个元素,这样就需要牺牲一个存储单元,所以在CreateDeque函数中就相应的将MaxSize加了1。知道了这些就可以写出代码了。

AC代码:

 bool Push( ElementType X, Deque D ){
if((D->Rear+)%D->MaxSize==D->Front)
return false;
D->Front=(D->MaxSize+D->Front-)%D->MaxSize;
D->Data[D->Front]=X;
return true;
} ElementType Pop( Deque D ){
if(D->Front==D->Rear)
return ERROR;
int res=D->Data[D->Front];
D->Front=(D->Front+)%D->MaxSize;
return res;
} bool Inject( ElementType X, Deque D ){
if((D->Rear+)%D->MaxSize==D->Front)
return false;
D->Data[D->Rear]=X;
D->Rear=(D->Rear+)%D->MaxSize;
return true;
} ElementType Eject( Deque D ){
if(D->Front==D->Rear)
return ERROR;
D->Rear=(D->MaxSize+D->Rear-)%D->MaxSize;
int res=D->Data[D->Rear];
return res;
}

pta6-15(双端循环队列)的更多相关文章

  1. HDU 5289 Assignment(多校2015 RMQ 单调(双端)队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5289 Problem Description Tom owns a company and he is ...

  2. java并发编程工具类JUC第七篇:BlockingDeque双端阻塞队列

    在之前的文章中已经为大家介绍了java并发编程的工具:BlockingQueue接口.ArrayBlockingQueue.DelayQueue.LinkedBlockingQueue.Priorit ...

  3. 双端循环列表实现栈(python)

    # -*- coding: utf-8 -*- from collections import deque class Node(object): def __init__(self, value=N ...

  4. Java实现 LeetCode 641 设计循环双端队列(暴力)

    641. 设计循环双端队列 设计实现双端队列. 你的实现需要支持以下操作: MyCircularDeque(k):构造函数,双端队列的大小为k. insertFront():将一个元素添加到双端队列头 ...

  5. [Swift]LeetCode641. 设计循环双端队列 | Design Circular Deque

    Design your implementation of the circular double-ended queue (deque). Your implementation should su ...

  6. Leetcode641.Design Circular Deque设计循环双端队列

    设计实现双端队列. 你的实现需要支持以下操作: MyCircularDeque(k):构造函数,双端队列的大小为k. insertFront():将一个元素添加到双端队列头部. 如果操作成功返回 tr ...

  7. C#LeetCode刷题之#641-设计循环双端队列(Design Circular Deque)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4132 访问. 设计实现双端队列. 你的实现需要支持以下操作: M ...

  8. C++泛化双端队列

    循环双端队列 双端队列可以在队首和队尾进行入队操作.出队操作的特殊队列. 循环双端队列是充分利用空间,使用格外的数据存储队头和队尾,这里利用数组进行实现. 循环双端队列(CircleQueue.h) ...

  9. lintcode二叉树的锯齿形层次遍历 (双端队列)

    题目链接: http://www.lintcode.com/zh-cn/problem/binary-tree-zigzag-level-order-traversal/ 二叉树的锯齿形层次遍历 给出 ...

随机推荐

  1. Oracle服务无法启动,报:Windows无法启动OracleOraDb10g_home1TNSListener服务,错误 1067:进程意外终止。

    运行配置和移植工具中的Net Configuration Assistant,进行监听程序配置.删除配置,然后重新配置. 切记 一定是先删除配置,再重新配置,而不是新建配置. 或者 打开Net Man ...

  2. C#字符串加密解密

    /// <summary> /// 加密字符串 /// 注意:密钥必须为8位 /// </summary> /// <param name="strText&q ...

  3. 【ASP.NET 进阶】TreeView控件学习

    这几天上班没事做,也不好打酱油,学点没接触过的新东西吧,基本了解了下TreeView控件. TreeView 控件用于在树结构中显示分层数据,例如目录或文件目录等. 下面看代码吧: 1.效果图 2.静 ...

  4. msimg32.lib不用为绝对路径发愁

    msimg32.lib不用为绝对路径发愁 以前是每个工程添加bcb绝对路径下的 D:\Program Files (x86)\Borland\CBuilder6\Lib\Psdk\msimg32.li ...

  5. NativeClient开发指南

    https://blog.csdn.net/column/details/24458.html

  6. Ajax技术剖析

    Ajax的全称是Asynchronous JavaScript and XML,是JS的特有功能,它作用是异步JS数据交互,即在不进行页面刷新的情况下进行部分数据的获取,性能较高.值得注意的是,仅有A ...

  7. (FireDAC) 连接定义

     Defining Connection (FireDAC) 连接定义就是应用程序使用特定的FireDAC驱动连接数据库的参数集合.相当于BDE的别名,ADO的UDL,或者ODBC的DSN. For ...

  8. ReactiveX 学习笔记(13)基础类型

    Key Types and Life Management 本文主题是 Rx 中的基础类型 Subject 类及其生命周期的管理. 公共代码 RxNET private static void Wri ...

  9. Android构建项目时出现的小bug们(2018年5月19日19:31:20)

    问题详情 Error:Execution failed for task ':app:preDebugAndroidTestBuild'. > Conflict with dependency ...

  10. MySQL错误[ERR] 1064 - You have an error in your SQL syntax;

    MySQL打开创建函数的开关, 查询创建函数开关是否打开: show variables like '%func%'; 打开创建函数开关: ; 关闭创建函数开关: ;