📄 ferry.cpp
字号:
//渡口管理
//将客车类定义成一个队,货车类定义成一个队,渡船定义成一个栈
#include<iostream.h>
struct stack
{int data[10];
int top;
};
struct qnode
{int data;
qnode *next;
};
struct queue
{qnode* front;
qnode* rear;
};
int Initstack(stack &S)
{S.top=0; return(1);}
void Initqueue (queue &Q)
{qnode*p=new qnode;
Q.front=p;
Q.rear=p;
p->next=NULL;
int e;
cout<<"输入车号(输入0退出):";
cin>>e;
while(e!=0)
{p=new qnode;
p->data=e;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
cout<<"输入车号(输入0退出):";
cin>>e;
}
}
int OutQueue(queue &Q,int &e)
{qnode *s=new qnode;
if (Q.front==Q.rear) {cout<<"队空"<<endl;return(0);}
else {s=(Q.front)->next;
e=s->data;
(Q.front)->next=s->next;
if (s->next == NULL) Q.rear=Q.front;
delete(s);
return(1);
}
}
int EmptyQueue(queue Q)
{if (Q.rear==Q.front) return(1);
else return(0);
}
int Push (stack&S , int e)
{ if (S.top ==10) {return(0);}
else { S.data[S.top]=e;S.top++;
return(1);}
}
void main()
{stack DU; //DU表示渡船
queue KE,HUO; // KE表示客车,HUO表示货车
int i,j,t;
Initstack(DU);
cout<<"客车队列"<<endl;
Initqueue(KE);
cout<<"货车队列"<<endl;
Initqueue(HUO);
while(DU.top<10)
{for (i=0,j=0;i<4;i++) //先上4辆客车
{if (!EmptyQueue(KE)&&(DU.top <10))
{OutQueue(KE,t);cout<<t<<"上船"<<endl;Push (DU, t );j++;}}
for (i=j;i<5;i++) //再上1辆货车,客车不足时用货车补足
{if (!EmptyQueue(HUO)&& (DU.top <10))
{OutQueue(HUO,t);cout<<t<<"上船"<<endl;Push(DU, t);j++;}}
if (j<5) {for (i=j;i<5;i++) //货车不足时用客车补足
{if (!EmptyQueue(KE)&&(DU.top <10))
{OutQueue(KE,t);cout<<t<<"上船"<<endl;Push (DU,t ) ; j++;}
else {cout<<"客车货车合计不足10辆!"<<endl;goto loop;}}
}
}
loop:while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -