3.33.cpp

来自「严蔚敏数据结构习题C++实现」· C++ 代码 · 共 84 行

CPP
84
字号
#include <iostream>
using namespace std;
typedef int ElemType;
#define MAXSIZE 100
typedef struct DoubleQueue
{
        ElemType array[MAXSIZE];
        int rear,front;
}DoubleQueue;
void init_queue(DoubleQueue& dq);
bool enqueue(DoubleQueue& dq,const ElemType item);
bool dequeue(DoubleQueue& dq,ElemType& item);
ElemType GetValue(const DoubleQueue dq,bool head);
void play_queue(const DoubleQueue dq);
int main()
{
    ElemType X;
    DoubleQueue dq;
    init_queue(dq);
    enqueue(dq,4);
    enqueue(dq,5);
    enqueue(dq,6);
    enqueue(dq,3);
    enqueue(dq,2);
    //dequeue(dq,X);
    //dequeue(dq,X);
    play_queue(dq);
    system("pause");
    return 0;
}
void init_queue(DoubleQueue& dq)
{
     dq.rear = 0;
     dq.front = 0;
}
bool enqueue(DoubleQueue& dq,const ElemType item)
{
     if((dq.rear+1)%MAXSIZE == dq.front)
         return false;
     else 
     {
     if(dq.front == dq.rear)
     {
         dq.front = (dq.front+MAXSIZE-1)%MAXSIZE;
         dq.array[dq.front] = item;
     }
     else if((GetValue(dq,true)+GetValue(dq,false))/2 < item)
     {
         dq.array[dq.rear] = item;
         dq.rear = (dq.rear+1)%MAXSIZE;
     }
     else
     {
         dq.array[(dq.front+MAXSIZE-1)%MAXSIZE] = item;
         dq.front = (dq.front+MAXSIZE-1)%MAXSIZE;
     }
     }
     return true;
     
}
bool dequeue(DoubleQueue& dq,ElemType& item)
{
     if(dq.rear == dq.front)
         return false;
     else
     {
         item = dq.array[dq.front];
         dq.front = (dq.front+1)%MAXSIZE;
         return true;
     }
}
ElemType GetValue(const DoubleQueue dq,bool head)
{
     if(head)
         return dq.array[dq.front];
     else
         return dq.array[(dq.rear+MAXSIZE-1)%MAXSIZE];         
}
void play_queue(const DoubleQueue dq)
{
     for(int i=dq.front; i!=dq.rear; i=(i+1)%MAXSIZE)
         cout << dq.array[i] << ' ';
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?