#include<stdio.h>
#include <stdlib.h>
#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;
}
//入隊(duì)操作
int enter(queuetype *q, elemtype x)
{
if ((q->rear + 1) % (MAXNUM + 1) == q->front)
return (false); //隊(duì)列已滿
else
{
q->rear = (q->rear + 1) % (MAXNUM + 1);
q->queue[q->rear] = x;
return (true);
}
}
//出隊(duì)操作
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輛車的編號(hào)是:\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("客車數(shù)%d 貨車數(shù)%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輛車的編號(hào)為%d\n", n, result);
n = n + 1;
}
else
break;
}
int RESULT=queue_out(q2);
if(RESULT!=0)
{
printf("上船的第%d輛車的編號(hào)為%d\n", n, RESULT);
n = n + 1;
}
}
break;
}
printf("以上為第%d艘船里的車輛\n\n",p);
p++;
}
}
}
system("pause");
return 0;
}
|