题目链接: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. 键值对操作 之 combineByKey

    combineByKey( createCombiner,mergeValue,mergeCombiners,partitioner) combineByKey() 是最为常用的基于键进行聚合的函数. ...

  2. ubuntu编译安装nginx

    下载nginx源码, ./configure --prefix=/usr/local/nginx/1.8 --with-http_ssl_module --with-http_dav_module - ...

  3. compute by 的使用

    GROUP BY子句有个缺点,就是返回的结果集中只有合计数据,而没有原始的详细记录.如果想在SQL SERVER中完成这项工作,可以使用COMPUTE BY子句.COMPTE生成合计作为附加的汇总列出 ...

  4. Java 判断当前系统为Window或者Linux

    public static boolean isOSLinux() {         Properties prop = System.getProperties();         String ...

  5. rocketmq 4.2.0 版本 控制台本地搭建(史上最简单教程)

    就像发现新大陆一般,瞎折腾,搞出来了..并没有网上说的一大串....(本人公司的项目从未使用过springboot....) rocketmq  控制台,官方使用springboot 做后端,前端使用 ...

  6. numpy笔记

    numpy数组切片 import numpy as np arr = np.empty((8, 3))for i in range(8): arr[i] == i arr[1,2] # 选取第1行第2 ...

  7. Delphi与各数据库数据类型比较

    Delphi数据类型与各数据库数据类型对比如下表,如有具体说明见表中脚注: Delphi Type Oracle Types SQL Server Types MySQL Types [1] Inte ...

  8. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    在上一篇文章中Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream介绍了缓冲流中的字节流,而这一篇着重介绍缓冲流中字符流Buffered ...

  9. 【388】※ Some useful websites for learning Python

    Ref: Python Tips 1. *args and **kwargs 2. Debugging 3. Generators 4. Map, Filter and Reduce 5. set D ...

  10. 转:jquery操作元素的css样式(获取、修改等等)

    //1.获取和设置样式 $("#tow").attr("class")获取ID为tow的class属性 $("#two").attr(&qu ...