博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实习二 栈、队列和递归算法设计 (题目:停车场管理 )
阅读量:6939 次
发布时间:2019-06-27

本文共 16147 字,大约阅读时间需要 53 分钟。

一、需求分析

     1.每一组输入数据包括:汽车“到达”或“离去”信息、汽车牌照号码以

及到达或离去的时刻。

     2.输出信息:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用。        

     3.测试数据

      设n=2,输入数据为:(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。其中:‘A’表示到达;‘D’表示离去;‘E’表示输入结束。

     4.【选作内容】:两个栈共享空间,思考应开辟数组的空间是多少?

     5.【选作内容】:停放在便道上的汽车也收费,收费标准比停放在停车场的车。

View Code
#include
#include
#define MaxStackSize 3 //2*n-1个值 typedef struct //车辆信息的结构体{ int number; int ahour; int alhour; int aminute; int alminute;}Carmessage;typedef struct //栈的结构体{ Carmessage Car[MaxStackSize]; int top1; int top2;}SeqStack;typedef struct qnode //链式队列结点{ Carmessage Car; struct qnode *next;}LQNode;typedef struct //链式队列结点指针{ LQNode *front; LQNode *rear; int count;}LQueue; int QueueAppend(LQueue *Q,Carmessage Carx) //入队列函数 { LQNode *p; p=(LQNode *)malloc(sizeof(LQNode)); p->Car.number=Carx.number; p->Car.ahour=Carx.ahour; p->Car.aminute=Carx.aminute; p->Car.alhour=Carx.alhour; p->Car.alminute=Carx.alminute; p->next=NULL; Q->count++; if(Q->rear!=NULL)Q->rear->next=p; Q->rear=p; if(Q->front==NULL)Q->front=p; return 0; } int QueueAd(LQueue *Q,int lh,int lm) //排队等候入栈的车辆,载入入栈时间 { Q->front->Car.alhour=lh; Q->front->Car.alminute=lm; return 0; } int QueueGet(LQueue *Q,Carmessage *Cary) //出队列 { Cary->number=Q->front->Car.number; Cary->ahour=Q->front->Car.ahour; Cary->aminute=Q->front->Car.aminute; Cary->alhour=Q->front->Car.alhour; Cary->alminute=Q->front->Car.alminute; Q->front=Q->front->next; //队列头指针后移 Q->count--; return 0; } int StackPush(SeqStack *S,LQueue *Q,Carmessage Carx)//停车场的入栈函数 { if(S->top1>=(MaxStackSize+1)/2) //车场停满 ,停到过道 即入队列 QueueAppend(Q,Carx); else //车辆未满,入栈 S, { S->Car[S->top1].alhour=0; S->Car[S->top1].alminute=0; S->Car[S->top1].ahour=Carx.ahour; S->Car[S->top1].aminute=Carx.aminute; S->Car[S->top1].number=Carx.number; //*****************/!!!!!!!!!!!!!!!/// printf("!!!该车停车时刻:%d:%d",S->Car[S->top1].ahour,S->Car[S->top1].aminute); S->top1++; return 1; } } int StackPop(SeqStack *S,LQueue *Q,Carmessage *Carx)//停车场的出栈函数 { int n,m; int kaiguan=0;// SeqStack Sx; Carmessage Cary;// Sx.top1=0; //初始化用于转移车辆的栈 if(S->top1<=0)return 2;// printf("%d\n",S->top1); for(n=S->top1;S->top1>0;S->top1--) //寻找出栈的车牌号 (没被减)******************for管道else if(S->Car[S->top1-1].number==Carx->number) { Carx->ahour=S->Car[S->top1-1].ahour;//记录被删除车信息 Carx->aminute=S->Car[S->top1-1].aminute; Carx->alhour=S->Car[S->top1-1].alhour; Carx->alminute=S->Car[S->top1-1].alminute;// printf("!!该车停车时刻:%d:%d",Carx->ahour,Carx->aminute); // ?? if(n!=S->top1) { // m=n-S->top1; /* for(;Sx.top1
Car[n-1].ahour; Sx.Car[Sx.top1].aminute=S->Car[n-1].aminute; Sx.Car[Sx.top1].number=S->Car[n-1].number; Sx.Car[Sx.top1].alhour=S->Car[n-1].alhour; Sx.Car[Sx.top1].alminute=S->Car[n-1].alminute; }*/ for(;n>S->top1;n--,S->top2--) { S->Car[S->top2].ahour=S->Car[n-1].ahour; S->Car[S->top2].aminute=S->Car[n-1].aminute; S->Car[S->top2].number=S->Car[n-1].number; S->Car[S->top2].alhour=S->Car[n-1].alhour; S->Car[S->top2].alminute=S->Car[n-1].alminute; } for(S->top1--;S->top2
top1++,S->top2++) //转移进//开出 { S->Car[S->top1].ahour=S->Car[S->top2+1].ahour; S->Car[S->top1].aminute=S->Car[S->top2+1].aminute; S->Car[S->top1].number=S->Car[S->top2+1].number; S->Car[S->top1].alhour=S->Car[S->top2+1].alhour; S->Car[S->top1].alminute=S->Car[S->top2+1].alminute; } S->top2--; } S->top1--; //开出一辆 kaiguan=1; break; } if(kaiguan==0&&S->top1==0&&S->top1
top1=n;return 2;} if(S->top1==(MaxStackSize-1)/2&&Q->front!=NULL)//判断是否有车等候进站 { QueueGet(Q,&Cary); S->Car[S->top1].ahour=Cary.ahour; S->Car[S->top1].aminute=Cary.aminute; S->Car[S->top1].number=Cary.number; S->Car[S->top1].alhour=Cary.alhour; S->Car[S->top1].alminute=Cary.alminute; // printf("!该车停车时刻:%d:%d",Cary.ahour,Cary.aminute); S->top1++; } return 1; }int main(){ int m,biandao,chechang; int lh,lm; char al; Carmessage Carx; SeqStack S; LQueue Q; Q.rear=NULL; //初始化队列 Q.front=NULL; Q.count=0; S.top1=0; S.top2=MaxStackSize-1; //初始化栈; printf("车到达请输入A/ 车离开请输入D/ 退出E:"); while(scanf("%c",&al)!=EOF && al!='E') {// al=getchar(); if(al=='A') { printf("请输入停车时刻(例如12:12) "); scanf("%d:%d",&Carx.ahour,&Carx.aminute); printf("请输入车牌号:"); scanf("%d",&Carx.number); StackPush(&S,&Q,Carx); if(Q.count==0)printf("停车的位置:在停车场的%d号位\n",S.top1); else printf("停车的位置:在便道的%d号位\n",Q.count); } else if(al=='D') { printf("请输入离开时刻(例如12:12) "); scanf("%d:%d",&lh,&lm); if(S.top1>=(MaxStackSize+1)/2&&Q.front!=NULL)QueueAd(&Q,lh,lm); printf("请输入车牌号:"); scanf("%d",&Carx.number); m=StackPop(&S,&Q,&Carx); if(m==2)printf("无此车\n"); else{ printf("该车停车时刻:%d:%d\n",Carx.ahour,Carx.aminute); biandao=(Carx.alhour-Carx.ahour)*60+Carx.alminute-Carx.aminute; chechang=(lh-Carx.ahour)*60+lm-Carx.aminute; if(Carx.alhour==0&&Carx.alminute==0) { printf("该车在便道上停车时间:0"); printf("该车在停车场停车时间:%d\n",chechang); printf("该车需缴费(停车场2元/分钟,便道1元/分钟):%d元\n",chechang*2); } else { printf("该车在便道上停车时间:%d\n",biandao); printf("该车在停车场停车时间:%d\n",chechang-biandao); printf("该车需缴费(停车场2元/分钟,便道1元/分钟):%d元\n",chechang*2-biandao); } } } else printf("错误!!请重新输入\n"); // printf("\n%d\n",S.top1); printf("车到达请输入A/ 车离开请输入D/ 退出E:"); scanf("%c",&al); } return 0;}

                                                                         实习二 栈、队列和递归算法设计

     题目:停车场管理                   实习时间:2012/10/14

一、需求分析

     1.每一组输入数据包括:汽车“到达”或“离去”信息、汽车牌照号码以

及到达或离去的时刻。

     2.输出信息:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用。        

     3.测试数据

      设n=2,输入数据为:(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。其中:‘A’表示到达;‘D’表示离去;‘E’表示输入结束。

     4.【选作内容】:两个栈共享空间,思考应开辟数组的空间是多少?

5.【选作内容】:停放在便道上的汽车也收费,收费标准比停放在停车场的车。

 

二、设计

二、      1. 设计思想

二、        (1)存储结构

          以栈模拟停车场,以队列模拟车场外的便道。栈以顺序结构实现,队 列以链表结构实现。

          不需另设一个栈,栈顶空间临时停放为将要离去的汽车让路而从停车场退出来的汽车,栈用顺序存储结构实现。输入数据按到达或离去的时刻有序。栈中每个元素表示一辆汽车,包含三个数据项:汽车的牌照号码停车时刻和进入停车场的时刻。 

        (2)主要算法基本思想

            按照顺序(两栈共享空间)栈和链式队列的基本操作,初始化一个栈和一个队列,若车辆进站,先判断车站是否满,未满就进车站,满了就进过道:若车辆离开,先在站中找到该车辆,再判断队列是否空,若非空则将车从过道进到站中并记录进站的时间;若不进行车辆的进出则终止程序。

    2. 设计表示

        (1)函数调用关系图

          main→StackPush→QueueAppend→QueueAd→StackPop→QueueGet

        (2)函数接口规格说明

int StackPush(SeqStack *S,LQueue *Q,Carmessage Carx)//若车站S未满,则Carx的信息入栈;若车站S满,则Carx的信息入队列Q;         

int QueueAppend(LQueue *Q,Carmessage Carx) //Carx的信息入队列Q

int QueueAd(LQueue *Q,int lh,int lm) //队列Q中排队等候入栈的车辆,载入入栈时间 lh,lm  

int StackPop(SeqStack *S,LQueue *Q,Carmessage *Carx)// 若车站S非空,则Carx的信息出栈;若此时队列Q中有车等候入栈,则将该车入栈S。         

int QueueGet(LQueue *Q,Carmessage *Cary)    //队列非空,将Carx的信息从Q中出队列。

3. 实现注释    (即各项功能的实现程度)

      (1)可根据需要修改栈的大小(n项),只需将MaxStackSize 的值改2*n-1;

      (2)若输入的字母不是A,D,E,则提示重新输入。

(3)若栈中无输入的车牌号,则输出“无此车”,重新输入。

      4. 详细设计    (即主要算法的细化。略,见上课笔记)

【1】 int StackPush(SeqStack *S,LQueue *Q,Carmessage Carx)//停车场的入栈函数

 {

        if(S->top1>=(MaxStackSize+1)/2)   //车场停满 ,停到过道 即入队列

      QueueAppend(Q,Carx);   

        else                   //车辆未满,入栈 S,

   {

        S->Car[S->top1].alhour=0;

        S->Car[S->top1].alminute=0;

            S->Car[S->top1].ahour=Carx.ahour;

               S->Car[S->top1].aminute=Carx.aminute;

        S->Car[S->top1].number=Carx.number;

          S->top1++;

         return 1;

        }

【2】int QueueAppend(LQueue *Q,Carmessage Carx) //入队列函数

 {

          LQNode *p;

       p=(LQNode *)malloc(sizeof(LQNode));

        p->Car.number=Carx.number;

        p->Car.ahour=Carx.ahour;

        p->Car.aminute=Carx.aminute;

        p->Car.alhour=Carx.alhour;

        p->Car.alminute=Carx.alminute;

p->next=NULL;

        Q->count++;

        if(Q->rear!=NULL)Q->rear->next=p;

        Q->rear=p;

        if(Q->front==NULL)Q->front=p;

        return 0;

    }

【3】 int StackPop(SeqStack *S,LQueue *Q,Carmessage *Carx)//停车场的出栈函数

 {

        int n,m;

        int kaiguan=0;             //用于判断是否找到相应车牌号的车

     Carmessage Cary;

    if(S->top1<=0)return 2;

        for(n=S->top1;S->top1>0;S->top1--)           //寻找出栈的车牌号    if(S- >Car[S->top1-1].number==Carx->number)

    {

    Carx->ahour=S->Car[S->top1-1].ahour;//记录被删除车信息

    Carx->aminute=S->Car[S->top1-1].aminute;

    Carx->alhour=S->Car[S->top1-1].alhour;

    Carx->alminute=S->Car[S->top1-1].alminute;

        for(;n>S->top1;n--,S->top2--)

        {         

         S->Car[S->top2].ahour=S->Car[n-1].ahour;

               S->Car[S->top2].aminute=S->Car[n-1].aminute;

        S->Car[S->top2].number=S->Car[n-1].number;

          S->Car[S->top2].alhour=S->Car[n-1].alhour;

               S->Car[S->top2].alminute=S->Car[n-1].alminute;

        }

            for(S->top1--;S->top2<MaxStackSize;S->top1++,S->top2++)//转移进//开出

      {

      S->Car[S->top1].ahour=S->Car[S->top2+1].ahour;

               S->Car[S->top1].aminute=S->Car[S->top2+1].aminute;

        S->Car[S->top1].number=S->Car[S->top2+1].number;

          S->Car[S->top1].alhour=S->Car[S->top2+1].alhour;

               S->Car[S->top1].alminute=S->Car[S->top2+1].alminute;

            }

        S->top2--;

    }

      S->top1--;                  //开出一辆

      kaiguan=1;                //找到该车

      break;

     }

     if(kaiguan==0&&S->top1==0&&S->top1<n){S->top1=n;return 2;}

     if(S->top1==(MaxStackSize-1)/2&&Q->front!=NULL)//判断是否有车等候进站

     {

          QueueGet(Q,&Cary);

           S->Car[S->top1].ahour=Cary.ahour;

            S->Car[S->top1].aminute=Cary.aminute;

            S->Car[S->top1].number=Cary.number;

           S->Car[S->top1].alhour=Cary.alhour;

            S->Car[S->top1].alminute=Cary.alminute;     

      S->top1++;

     }

    return 1;

 }

【4】int QueueGet(LQueue *Q,Carmessage *Cary)    //出队列

 {

        Cary->number=Q->front->Car.number;

        Cary->ahour=Q->front->Car.ahour;

        Cary->aminute=Q->front->Car.aminute;

        Cary->alhour=Q->front->Car.alhour;

        Cary->alminute=Q->front->Car.alminute;

        Q->front=Q->front->next;             //队列头指针后移

        Q->count--;

    return 0;                                      

 }

【5】int QueueAd(LQueue *Q,int lh,int lm) //排队等候入栈的车辆,载入入栈时间

 {

        Q->front->Car.alhour=lh;

        Q->front->Car.alminute=lm;

    return 0;

 }

三、调试分析

      1.调试过程中遇到的主要问题是如何解决的;

调试过程中存在少许C语言的基础语法错误,经独立仔细观察和调试修改正确,最大的难题是栈和队列的指针移动的条件需细心考虑,其在循环中的移动情况要考虑充分,以及地址在多个函数调用时的变化。在自己独立多次修改下,终于完成。     

2.对设计和编码的回顾讨论和分析;

在增加选作内容时,意识到在代码删改过程中,牵一发而动全身的纷繁复杂性,需要多次反复查看和检查。在今后的编程过程中要更注重代码整体设计的提纲记录,用更多的注释。

3.时间和空间复杂度的分析;

【1】入栈函数: 时间O(n),空间O(1)

       【2】入队列函数:时间O(n),空间O(n)

       【3】出栈函数:时间O(n^2),空间O(1)

       【4】出队列函数:时间O(1),空间O(1)

      4.改进设想;

此次实习需要设计的算法较少,主要是一些栈和队列的基本操作和各函数之间的调用条件(该条件或有更简洁的表示)。其它地方暂无修改办法。

5.经验和体会等。

多动手编程,才能熟练灵活的掌握C语言基础知识,才能更好的理解掌握数据结构的精髓。从而避免基础语法错误,让代码变得更简洁高效。如此才能准确高效的解决问题。在今后的编程过程中要更注重代码整体设计的提纲记录,用更多的注释。

 

四、用户手册(即使用说明)

   仅需按照提示输入大写字母和数字(输入的时间格式按12:12的时刻格式)即可。

 

五、运行结果

运行环境:C-free

【1】设n=2,输入数据为:(‘A’,1,5),(‘A’,2,10),(‘D’,1,15),(‘A’,3,20),(‘A’,4,25),(‘A’,5,30),(‘D’,2,35),(‘D’,4,40),(‘E’,0,0)。其中:‘A’表示到达;‘D’表示离去;‘E’表示输入结束。

【选作内容】:停放在便道上的汽车也收费,收费标准比停放在停车场的车。

 

 

 

 

 

若输入非’A’’D’’E’,则提示重新输入。

 

 

2】又增选做内容,

【选作内容】:两个栈共享空间,思考应开辟数组的空间是多少?//2*n-1

【选作内容】:停放在便道上的汽车也收费,收费标准比停放在停车场的车。

【内容】若栈中无出栈的车牌号,输出提示,重新输入。

 

 

 

六、源程序清单

#include<stdio.h>

#include<malloc.h>

#define MaxStackSize 3            //2*n-1个值

typedef struct               //车辆信息的结构体

{

         int number;

         int ahour;

         int alhour;

         int aminute;

         int alminute;

}Carmessage;

typedef struct                //栈的结构体

{

    Carmessage Car[MaxStackSize];

         int top1;

         int top2;

}SeqStack;

typedef struct qnode        //链式队列结点

{

         Carmessage Car;

         struct qnode *next;

}LQNode;

typedef struct              //链式队列结点指针

{

         LQNode *front;

         LQNode *rear;

         int count;

}LQueue;

 int QueueAppend(LQueue *Q,Carmessage Carx) //入队列函数

 {

        LQNode *p;

    p=(LQNode *)malloc(sizeof(LQNode));

         p->Car.number=Carx.number;

         p->Car.ahour=Carx.ahour;

         p->Car.aminute=Carx.aminute;

         p->Car.alhour=Carx.alhour;

         p->Car.alminute=Carx.alminute;

         p->next=NULL;

         Q->count++;

         if(Q->rear!=NULL)Q->rear->next=p;

         Q->rear=p;

         if(Q->front==NULL)Q->front=p;

         return 0;

 }

 int QueueAd(LQueue *Q,int lh,int lm)           //排队等候入栈的车辆,载入入栈时间

 {

        Q->front->Car.alhour=lh;

        Q->front->Car.alminute=lm;

    return 0; 

 }

 int QueueGet(LQueue *Q,Carmessage *Cary)    //出队列

 {

        Cary->number=Q->front->Car.number;

        Cary->ahour=Q->front->Car.ahour;

        Cary->aminute=Q->front->Car.aminute;

        Cary->alhour=Q->front->Car.alhour;

        Cary->alminute=Q->front->Car.alminute;

        Q->front=Q->front->next;                        //队列头指针后移

        Q->count--;

    return 0;                                      

 }

 int StackPush(SeqStack *S,LQueue *Q,Carmessage Carx)//停车场的入栈函数

 {

        if(S->top1>=(MaxStackSize+1)/2)                  //车场停满 ,停到过道 即入队列

         QueueAppend(Q,Carx);   

        else                                       //车辆未满,入栈 S,

          {

        S->Car[S->top1].alhour=0;

        S->Car[S->top1].alminute=0;

            S->Car[S->top1].ahour=Carx.ahour;

                 S->Car[S->top1].aminute=Carx.aminute;

        S->Car[S->top1].number=Carx.number;

         //*****************/!!!!!!!!!!!!!!!/

//      printf("!!!该车停车时刻:%d:%d",S->Car[S->top1].ahour,S->Car[S->top1].aminute);

                   S->top1++;

                   return 1;

        }

 }

 int StackPop(SeqStack *S,LQueue *Q,Carmessage *Carx)//停车场的出栈函数

 {

        int n,m;

        int kaiguan=0;

//     SeqStack Sx;

        Carmessage Cary;

//    Sx.top1=0;              //初始化用于转移车辆的栈

    if(S->top1<=0)return 2;

//    printf("%d\n",S->top1);

         for(n=S->top1;S->top1>0;S->top1--)            //寻找出栈的车牌号 (没被减)******************for管道else

    if(S->Car[S->top1-1].number==Carx->number)

    {

             Carx->ahour=S->Car[S->top1-1].ahour;//记录被删除车信息

             Carx->aminute=S->Car[S->top1-1].aminute;

             Carx->alhour=S->Car[S->top1-1].alhour;

             Carx->alminute=S->Car[S->top1-1].alminute;

//          printf("!!该车停车时刻:%d:%d",Carx->ahour,Carx->aminute);         //      ??

        if(n!=S->top1)

      {

         //      m=n-S->top1;

            /* for(;Sx.top1<m;n--,Sx.top1++,Sx.top2--)   //转移出  多加一

             {

             Sx.Car[Sx.top1].ahour=S->Car[n-1].ahour;

                 Sx.Car[Sx.top1].aminute=S->Car[n-1].aminute;

        Sx.Car[Sx.top1].number=S->Car[n-1].number;

         Sx.Car[Sx.top1].alhour=S->Car[n-1].alhour;

                 Sx.Car[Sx.top1].alminute=S->Car[n-1].alminute;

        }*/

        for(;n>S->top1;n--,S->top2--)

        {           

                   S->Car[S->top2].ahour=S->Car[n-1].ahour;

                 S->Car[S->top2].aminute=S->Car[n-1].aminute;

        S->Car[S->top2].number=S->Car[n-1].number;

         S->Car[S->top2].alhour=S->Car[n-1].alhour;

                 S->Car[S->top2].alminute=S->Car[n-1].alminute;

                

        }

            for(S->top1--;S->top2<MaxStackSize;S->top1++,S->top2++)        //转移进//开出

             {

             S->Car[S->top1].ahour=S->Car[S->top2+1].ahour;

                 S->Car[S->top1].aminute=S->Car[S->top2+1].aminute;

        S->Car[S->top1].number=S->Car[S->top2+1].number;

         S->Car[S->top1].alhour=S->Car[S->top2+1].alhour;

                 S->Car[S->top1].alminute=S->Car[S->top2+1].alminute;

            }

        S->top2--;

           }

      S->top1--;                  //开出一辆

      kaiguan=1;

      break;

     }

     if(kaiguan==0&&S->top1==0&&S->top1<n){S->top1=n;return 2;}

     if(S->top1==(MaxStackSize-1)/2&&Q->front!=NULL)//判断是否有车等候进站

     {

         QueueGet(Q,&Cary);

            S->Car[S->top1].ahour=Cary.ahour;

            S->Car[S->top1].aminute=Cary.aminute;

            S->Car[S->top1].number=Cary.number;

            S->Car[S->top1].alhour=Cary.alhour;

            S->Car[S->top1].alminute=Cary.alminute;          

//         printf("!该车停车时刻:%d:%d",Cary.ahour,Cary.aminute);

             S->top1++;

     }

    return 1;

 

 }

int main()

{

         int m,biandao,chechang;

         int lh,lm;

         char al;

         Carmessage Carx;

         SeqStack S;

         LQueue Q;

         Q.rear=NULL;                              //初始化队列

         Q.front=NULL;

         Q.count=0;

    S.top1=0;

         S.top2=MaxStackSize-1;                                 //初始化栈;

         printf("车到达请输入A/ 车离开请输入D/ 退出E:");

         while(scanf("%c",&al)!=EOF && al!='E')

         {

//      al=getchar();

         if(al=='A')

         {

                   printf("请输入停车时刻(例如12:12)  ");

            scanf("%d:%d",&Carx.ahour,&Carx.aminute);

        printf("请输入车牌号:");

        scanf("%d",&Carx.number);

                   StackPush(&S,&Q,Carx);

        if(Q.count==0)printf("停车的位置:在停车场的%d号位\n",S.top1);

                   else printf("停车的位置:在便道的%d号位\n",Q.count);

         }

         else if(al=='D')

         {

                   printf("请输入离开时刻(例如12:12)  ");

            scanf("%d:%d",&lh,&lm);

            if(S.top1>=(MaxStackSize+1)/2&&Q.front!=NULL)QueueAd(&Q,lh,lm);

        printf("请输入车牌号:");

        scanf("%d",&Carx.number);

        m=StackPop(&S,&Q,&Carx);

        if(m==2)printf("无此车\n");

                   else{

                   printf("该车停车时刻:%d:%d\n",Carx.ahour,Carx.aminute);

                   biandao=(Carx.alhour-Carx.ahour)*60+Carx.alminute-Carx.aminute;

                   chechang=(lh-Carx.ahour)*60+lm-Carx.aminute;

                   if(Carx.alhour==0&&Carx.alminute==0)

                   {

                            printf("该车在便道上停车时间:0");

                            printf("该车在停车场停车时间:%d\n",chechang);

                            printf("该车需缴费(停车场2元/分钟,便道1元/分钟):%d元\n",chechang*2);

                   }

                   else

                   {

                            printf("该车在便道上停车时间:%d\n",biandao);             

            printf("该车在停车场停车时间:%d\n",chechang-biandao);

                            printf("该车需缴费(停车场2元/分钟,便道1元/分钟):%d元\n",chechang*2-biandao);

                   }                

                   }

         }

    else printf("错误!!请重新输入\n");

           //  printf("\n%d\n",S.top1);

                   printf("车到达请输入A/ 车离开请输入D/ 退出E:");

                   scanf("%c",&al);

         }

         return 0;

}

转载于:https://www.cnblogs.com/XDJjy/archive/2013/04/07/3005987.html

你可能感兴趣的文章
mysql把一个表某个字段的内容复制到另一张表的某个字段的SQL语句写法
查看>>
java类初始化顺序-阿里笔试题
查看>>
ExecutorService线程池
查看>>
二十年后的回眸(9)——十年著书路
查看>>
把握数据库发展趋势 DBA应如何避免“踩坑”?
查看>>
P2V实现VMware Workstation 虚拟机到ESXi主机
查看>>
OpenGL入门学习[七]
查看>>
ip v5
查看>>
SQL高级查询技巧
查看>>
Android 动画效果学习笔记
查看>>
shell(3)应用
查看>>
OpenResty + Lua 访问Redis
查看>>
11.2 Apache虚拟主机
查看>>
移动APP及游戏推广,有预算为什么还起不了量
查看>>
中国六个漂亮的古镇风景名胜区网站欣赏
查看>>
javascript 基础4
查看>>
计算label的高度:boundingRectWithSize的使用
查看>>
我的友情链接
查看>>
shell脚本
查看>>
HTML5应用与原生应用之间的差异
查看>>