第3章 栈和队列
3.3 栈和队列的应用
综合应用题 第4题

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define MaxSize 100
using namespace std;
typedef int ElemType;
typedef struct{
ElemType data[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue &Q)
{
Q.rear=Q.front=0;
}
int EnQueuel(SqQueue &Q,ElemType x)
{
if(Q.rear==MaxSize)
return 0;
Q.data[Q.rear]=x;
Q.rear++;
return 1;
}
int DeQueuel(SqQueue &Q)
{
int x=0;
if(Q.front==Q.rear)
return 0;
x=Q.data[Q.front];
Q.front++;
return x;
}
bool QueueEmpty(SqQueue &Q)
{
if(Q.front==Q.rear)
return true;
else
return false;
}
void PrintQueue(SqQueue Q)
{
while(Q.front!=Q.rear)
{
cout<<Q.data[Q.front]<<" ";
Q.front++;
}
cout<<endl;
}
int main() {
SqQueue q,q1,q2;
InitQueue(q);
InitQueue(q1);
InitQueue(q2);
for(int i=1;i<=5;i++)
{
EnQueuel(q1,i);
EnQueuel(q2,i);
}
int i=0,j=0,x;
while(j<10)
{
if(!QueueEmpty(q1)&&i<4)
{
x=DeQueuel(q1);
EnQueuel(q,x);
i++;
j++;
}
else if(!QueueEmpty(q2)&&i==4)
{
x=DeQueuel(q2);
EnQueuel(q,x);
j++;
i=0;
}
else
{
while(!QueueEmpty(q2)&&j<10&&i<4)
{
x=DeQueuel(q2);
EnQueuel(q,x);
i++;
j++;
}
i=0;
}
if(QueueEmpty(q1)&&QueueEmpty(q2))
j=11;
}
PrintQueue(q);
PrintQueue(q1);
PrintQueue(q2);
return 0;
}
