?? 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 + -