数据结构与算法的问题,要求使用队列(两种方式,顺序与链式)要求C 编写

排队加油:加油站有两个加油口(编号:A和B),第一个加油口的加完一辆车需要2T时间,第二个加油口需要3T。假设开始时两个队伍为空,每隔T时间会有一辆车辆排队,新来的汽车总... 排队加油:加油站有两个加油口(编号:A和B),第一个加油口的
加完一辆车需要2T时间,第二个加油口需要3T。假设开始时两个队伍为空,
每隔T时间会有一辆车辆排队,新来的汽车总排在比较短的队伍后面。一
共有N辆车来加油,按到达时间编号:(1到N),按加完油顺序输出汽车
编号和汽车加油口编号
展开
 我来答
匿名用户
2020-05-18
展开全部
//来自一个菜鸟的回答,写的不好,有问题可以指出哦。
#include<stdio.h>
void main(){
int i,N;
int queue_1[50]={0},queue_2[50]={0},front1=0,front2=0,rear1=0,rear2=0;
scanf("%d",&N);
for(i=1;i<=N;i++){
if(i%2==0&&rear1!=front1){ // 如果时间是2T 汽车i就出A站
printf("A-%d\n",queue_1[front1++]);
}
if(i%3==0&&rear2!=front2){ //如果时间是3T,汽车出B站,注意如果是6的倍速的话,A,B内都有车出站。
printf("B-%d\n",queue_2[front2++]);
}
if ((rear1-front1)==(rear2-front2))//如果站内汽车相等,默认进入A站
queue_1[rear1++]=i;
else (rear1-front1)>(rear2-front2)?(queue_2[rear2++]=i):(queue_1[rear1++]=i); //谁的汽车数小进谁家

}
//现在没有汽车要进站了,就考虑出站顺序
for(i;i<9999&&front1!=rear1&&front2!=rear2;i++){ //注意时间不要重置,继续是i
if(i%2==0){
printf("A-%d\n",queue_1[front1++]);
}
else if(i%3==0){
printf("B-%d\n",queue_2[front2++]);
}
}
// 当有一家汽车走完时,另一家还有的话,直接出站就是了
while(front1!=rear1){
printf("A-%d\n",queue_1[front1++]);

}
while(front2!=rear2){
printf("B-%d\n",queue_2[front2++]);}

}
迈杰
2024-11-30 广告
RNA-seq数据分析是转录组研究的核心,包括数据预处理、序列比对、定量分析、差异表达分析、功能注释和可视化等步骤。数据预处理主要是质量控制和去除低质量序列。序列比对使用HISAT2、STAR等工具将reads比对到参考基因组。定量分析评估... 点击进入详情页
本回答由迈杰提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式