当前位置:我的异常网» C语言 » 渡船有关问题
渡船有关问题
www.myexceptions.net 网友分享于:2013-03-06 浏览:22次
渡船问题!
一渡口,每条渡轮一次能装载6辆汽车过江,车辆分为客车、鲜货车和普通货车三类,规定;(1)同类汽车先到的先上船;(2)上船的优先级为:客车优先于鲜货车、鲜货车优先于普通货车;(3)每上三辆客车才允许上两辆鲜货车,然后再允许上一辆货车。若等待的客车不足三辆时,用鲜货车填补,当等待的鲜货车不足两辆时,按客车优先于普通货车的原则填补;当没有普通货车等待时,按客车优先于鲜货车的原则填补;(4)当装满六辆后则自动开船。
根据分析处理如下:
(1)汽车若渡江则根据汽车类型入队,假设:用1代表客车,2代表鲜货车,3代表普通货车。所以要设三个队列,用以区别汽车类型和到达的先后顺序,
汽车入队算法如下:
LQueqe q1,q2,q3;
InitQueqe(q1); InitQueue(q2); InitQueue(q3);
void carinque() { /* 汽车入队 */
int i,x;
scanf(“%d,%d”,&i,&x);
if(x <1 || x> 3) printf(“输入汽车类型错误\n”) ;
else
{ switch(x)
{case 1: EnQueue(q1,i); break; /* 客车进q1队 */
case 2: EnQueue(q2, i); break; /* 鲜货车进q2队 */
case 3: EnQueue(q3, i); break; /* 普通货车进q2队*/
}
}
}
(2)渡轮到后按规则上船,a[6]是开进渡轮车数组,算法如下:
int carn1=carn2=carn3=0;
int Inship( )
{int n;
n=carn1+carn2+carn3;
while (!EmptyQueue(q1) || !EmptyQueue(q2) ||!EmptyQueue(q3))
{ while (!EmptyQueue(q1)&& n <6 && carn1 <3)
{ a[n++]=OutQueue(q1);carn1++; }
if(n==6) { Print(a,n); return 1;} //print是一函数
while(!EmptyQueue(q2) && n <6 && carn1+carn2 <5)
{a[n++]=OutQueue(q2); carn2++;}
if(n==6) { Print(a,n); return 1;}/* 满6辆则开船 */
if(!EmptyQueue(q3))
{ a[n++]=OutQueue(q3); carn3++;}
if(n==6) { Print(a,n); return 1;}
} /* While */
if(carn1+carn2+carn3 <6)
printf( "渡轮上有%d辆车,继续等待......\n“
,carn1+carn2+carn3);
}/* Inship */
能提供的代码以上,那位大虾能帮我完成余下的部分????先谢啦
------解决方案--------------------
1.本程序中,将客车类定义一个队KE,货车类定义一个队HE,过江渡船定义成一个栈DC。栈采用顺序存储结构,队采用链式存储结构。
#define sqstack_maxsize 10
typedef struct sqstack
{DataType data[sqstack_maxsize];
int top;
}SqStackTp;
typedef struct linked_queue
{DataType data;
struct linked_queue *next;
}LqueueTp;
typedef struct queueptr
{LqueueTp *front,*rear;
}QueptrTp;
int InitStack(SqStackTp *sq) {sq-> top=0; return(1);}
void InitQueue (QueptrTp *lp)
{LqueueTp *p;
p=(LqueueTp * )malloc(sizeof(LqueueTp));
lq-> front=p;
lq-> rear=p;
( lq-> front)-> next=NULL;
}
int QutQueue(QueptrTp *lp,Data Type *x)
{LqueueTp *s;
if (lq-> front==lq-> rear) {error(“队空”);return(0);}
else {s=(lq-> front)-> nest;
*x=s-> data;
(lq-> front)-> next=s-> next;
文章评论