标题: 一个基于C语言的码头调度程序,要求客车和货车的出列顺序是每四辆客车后跟一辆货车 [打印本页]

作者: fengxu12345    时间: 2019-11-16 23:09
标题: 一个基于C语言的码头调度程序,要求客车和货车的出列顺序是每四辆客车后跟一辆货车
#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;
}

//入队操作
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;
}






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1