注册 登录
编程论坛 数据结构与算法

求高手解释一下该程序

xy2bl 发布于 2010-12-28 18:32, 556 次点击
void leave(sqstack *tcc,sqstack *dcc,LinkQueue *p,car_info a,float pay)
{
car_info x,ss;
QueuePtr b;
int find=1,arrivetime=0;
float cost=0.0;
while(find)
{

ss=pop(tcc);
push(dcc,ss);
if(ss.car_num==a.car_num)
{
find=0;
cost=(a.time-ss.time)*pay;
arrivetime=ss.time;
}
}
pop(dcc); //把临时堆栈的第一辆车(要离开的)去掉;
while(dcc->stacksize)
{
x=pop(dcc);
push(tcc,x);
}
if(tcc->stacksize<2&&p->lenth!=0)
{
b=DeQueue(p);
x.car_num=b->car_num;
x.time=b->time;
push(tcc,x);
printf("车牌号为%d的车辆由便道进入停车场%d号车道\n",x.car_num,tcc->stacksize);
}
printf("\n**********************************************\n");
printf("|车牌号码|进站时刻|出站时刻|停留时间|停车费用|\n");
printf("|%-6d |%-6d |%-6d |%-6d |%-6.2f |\n",a.car_num,arrivetime,a.time,a.time-arrivetime,cost);
printf("**********************************************\n");
}
版主帮我解释一下该程序
5 回复
#2
xy2bl2010-12-28 22:39
帮个忙
#3
xy2bl2010-12-29 11:09
版主,帮个忙
#4
寒风中的细雨2010-12-29 12:27
/*
*车辆到达时 的处理过车
*当车厂有空的车位时 表示可以停车  则进栈操作表示
*当车厂没有剩余的车位时,则将车停放在 便道上  则进队列操作
*/
void arrive(sqstack *s,LinkQueue *p,car_info a,int n)
{
    if(s->stacksize<n)
    {
        push(s,a);
        printf("\n车牌号为%d的车辆进入停车场%d号车道\n",a.car_num,s->stacksize);
    }
    else  
    {
        EnQueue(p,&a);
        printf("\n停车场已满,车牌号为%d的车辆停在便道的%d号位置\n",a.car_num,p->lenth);
    }
}
#5
寒风中的细雨2010-12-29 12:37
/*
*车辆 离开时的处理过程
*/
void leave(sqstack *tcc,sqstack *dcc,LinkQueue *p,car_info a,float pay)
{
    car_info x,ss;
    QueuePtr b;
    int find=1,arrivetime=0;
    float cost=0.0;
    while(find)
    { //在停车场  查找
        ss=pop(tcc);
        push(dcc,ss); // 将tcc中的数据搬到dcc中 直到找到 则停止搬运
        if(ss.car_num==a.car_num)
        { //表示找到
            find=0;
            cost=(a.time-ss.time)*pay; //计算费用
            arrivetime=ss.time; //登记时间
        }
    }
    pop(dcc); //把临时堆栈的第一辆车(要离开的)去掉;
    while(dcc->stacksize)
    { //把dcc剩余的信息 全部搬到tcc中
        x=pop(dcc);
        push(tcc,x);
    }
    if(tcc->stacksize<2&&p->lenth!=0)
    { //如果if条件成立 则将便道上的车辆移进停车场
        b=DeQueue(p);
        x.car_num=b->car_num;
        x.time=b->time;
        push(tcc,x);
        printf("车牌号为%d的车辆由便道进入停车场%d号车道\n",x.car_num,tcc->stacksize);
    }

    printf("\n**********************************************\n");
    printf("|车牌号码|进站时刻|出站时刻|停留时间|停车费用|\n");
    printf("|%-6d |%-6d |%-6d |%-6d |%-6.2f |\n",a.car_num,arrivetime,a.time,a.time-arrivetime,cost);
    printf("**********************************************\n");
}
#6
chenzp2010-12-30 18:10
计科大二生迷茫中。。。。。。。。
1