/*
问题:有一个渡口,每条渡轮一次能装载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&
问题:有一个渡口,每条渡轮一次能装载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&