轮船渡口管理 C++版

这是一个使用C++编写的程序,模拟了一个渡口管理的场景,每条渡轮可载10辆汽车,规则包括:客车优先,每4辆客车才能上1辆货车,满载或超时即开船。程序通过链表实现汽车队列,用户可以输入汽车类型进行登记,命令渡轮起航等操作。
摘要由CSDN通过智能技术生成
/*
问题:有一个渡口,每条渡轮一次能装载10辆汽车过江,过江车辆分为客车
和货车两类,上渡轮有如下规定:
(1)同类汽车先到先上船
(2)客车先于货车上船
(3)每上4辆客车才允许上一辆货车,但若等待的客车不足4辆则用货车填补,
反过来,若没有货车等待则用客车填补
(4)装满10辆后自动开船,当等待时间较长时车辆不足10辆也应人为控制发船
*/
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;


typedef int ElemType;
struct LNode
{
ElemType data;//值域
LNode* next;//链接指针域
};
struct  LinkQueue
{
LNode* front;//队首指针
LNode* rear;//队尾指针
};


void InitQueue(LinkQueue& HQ)//初始化链表
{
HQ.front=HQ.rear=NULL;//队首队尾置空
}


void EnQueue(LinkQueue& HQ, ElemType item)//向链表插入元素
{
LNode* newptr = new LNode;//新建节点
newptr->data = item;
newptr->next = NULL;//新节点指针域置空


if(HQ.rear == NULL)
HQ.front = HQ.rear = newptr;//若链队为空,新节点既是队首也是队尾
else
HQ.front = HQ.rear->next = newptr;//非空,则新节点链接队尾,并修改队尾指针
}


ElemType OutQueue(LinkQueue& HQ)//删除元素
{
if(HQ.front == NULL)
{
cout << "链队为空,无法删除!!" << endl;
exit(1);
}
ElemType temp = HQ.front->data;//暂存队首指针以便返回
LNode* p = HQ.front;
HQ.front = p->next;


if(HQ.front == NULL)
{
HQ.rear = NULL;
}


delete p;


return temp;
}


ElemType PeekQueue(LinkQueue& HQ)//读取队首元素
{
if(HQ.front == NULL)
{
cerr << "链队为空无队首元素!!" << endl;
exit(1);
}


return HQ.front->data;
}


bool EmptyQueue(LinkQueue&
  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值