• pta6-15(双端循环队列)


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

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

    思路:

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

    AC代码:

     1 bool Push( ElementType X, Deque D ){
     2     if((D->Rear+1)%D->MaxSize==D->Front)
     3         return false;
     4     D->Front=(D->MaxSize+D->Front-1)%D->MaxSize;
     5     D->Data[D->Front]=X;
     6     return true;
     7 }
     8 
     9 ElementType Pop( Deque D ){
    10     if(D->Front==D->Rear) 
    11         return ERROR;
    12     int res=D->Data[D->Front];
    13     D->Front=(D->Front+1)%D->MaxSize;
    14     return res;
    15 }
    16 
    17 bool Inject( ElementType X, Deque D ){
    18     if((D->Rear+1)%D->MaxSize==D->Front)
    19         return false;
    20     D->Data[D->Rear]=X;
    21     D->Rear=(D->Rear+1)%D->MaxSize;
    22     return true;
    23 }
    24 
    25 ElementType Eject( Deque D ){
    26     if(D->Front==D->Rear)     
    27         return ERROR;
    28     D->Rear=(D->MaxSize+D->Rear-1)%D->MaxSize;
    29     int res=D->Data[D->Rear];
    30     return res;
    31 }
  • 相关阅读:
    Ubuntu里Eclipse关联Jdk
    解决Ubuntu自带编译器不好使问题
    Ubuntu英文变为中文
    两个VirtualBox版本装的语言不一样?
    Hadoop-2.0 目录简介
    Eclipse项目里面看源码和文档
    Eclipse搭建Struts2环境
    2017,崭新的一年!
    cl-closure-template 中文乱码的解决方法
    common-list基础知识--多值的返回与接收
  • 原文地址:https://www.cnblogs.com/FrankChen831X/p/10485958.html
Copyright © 2020-2023  润新知