#include
#include
#define true 1
#define false 0
#define null 0
#define MAXNUM 20
typedef int elemtype;
typedef struct queue_type
{
elemtype queue[MAXNUM + 1];
int front;
int rear;
} queuetype;
queuetype Q1;
queuetype Q2;
//初始化
void q_init(queuetype *q)
{
q->rear = q->front = 0;
}
//入队操作
int enter(queuetype *q, elemtype x)
{
if ((q->rear + 1) % (MAXNUM + 1) == q->front)
return (false); //队列已满
else
{
q->rear = (q->rear + 1) % (MAXNUM + 1);
q->queue[q->rear] = x;
return (true);
}
}
//出队操作
elemtype queue_out(queuetype *q)
{
if (q->front == q->rear)
return (null);
else
{
q->front = (q->front + 1) % (MAXNUM + 1);
return(q->queue[q->front]);
}
}
int main()
{
int p=1;
int i, j, k, m, n, x, y, z;
queuetype *q1;
queuetype *q2;
q1 = &Q1;
q2 = &Q2;
q_init(q1);
q_init(q2);
for (m = 1;m <=100;m++)
{
printf("\n");
printf("若是入列,请输入1;若是出列,请输入0:\n");
scanf_s("%d", &z);
if (z != 0 && z != 1)
{
printf("ERROR!!!\n");
scanf_s("%d", &z);
}
if (z == 1)
{
{
printf("第%d辆车的编号是:\n", m);
scanf_s("%d", &x);
printf("若是客车,请输入1;若是货车,请输入0:\n");
scanf_s("%d", &y);
if (y == 1)
{
enter(q1, x);
}
else if (y == 0)
{
enter(q2, x);
}
}
printf("客车数%d 货车数%d", q1->rear, q2->rear);
}
else if (z == 0)
{
for(k=m/10;k>=0;k--)
{
for(n=1;n<=10;)
{
for (j = 1;j <= 2;j++)
{
for (i = 0;i <= 3;i++)
{
int result=queue_out(q1);
if(result!=0)
{
printf("上船的第%d辆车的编号为%d\n", n, result);
n = n + 1;
}
else
break;
}
int RESULT=queue_out(q2);
if(RESULT!=0)
{
printf("上船的第%d辆车的编号为%d\n", n, RESULT);
n = n + 1;
}
}
break;
}
printf("以上为第%d艘船里的车辆\n\n",p);
p++;
}
}
}
system("pause");
return 0;
}