⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ferry.cpp

📁 该算法模拟渡口管理。过江渡船每次能载10辆车过江
💻 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 + -