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 + -
显示快捷键?