亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言怎么實現停車場管理

發布時間:2022-03-17 15:06:48 來源:億速云 閱讀:166 作者:iii 欄目:開發技術

這篇文章主要介紹了C語言怎么實現停車場管理的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C語言怎么實現停車場管理文章都會有所收獲,下面我們一起來看看吧。

1.問題描述

停車場內只有一個可停放n輛汽車的狹長通道,且只有一個大門可供汽車進出。汽車在停車場內按車輛到達時間的先后順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在停車場的最北端),若車場內已停滿n輛汽車,則后來的汽車只能在門外的便道上等候,一旦有車開走,則排在便道上的第一輛車即可開入;當停車場內某輛車要離開時,在它之后開入的車輛必須先退出車場為它讓路,待該輛車開出大門外,其它車輛再按原次序進入車場,每輛停放在車場的車在它離開停車場時必須按它停留的時間長短交納費用。試為停車場編制按上述要求進行管理的模擬程序。

2.基本要求

(1)以棧模擬停車場,以隊列模擬車場外的便道,按照從終端讀入的輸入數據序列進行模擬管理。
(2)每一組輸入數據包括三個數據項:汽車“到達”或“離去”信息、汽車牌照號碼及到達或離去的時刻,對每一組輸入數據進行操作后的輸出數據為:若是車輛到達,則輸出汽車在停車場內或便道上的停車位置;若是車離去;則輸出汽車在停車場內停留的時間和應交納的費用(在便道上停留的時間不收費)。
(3)棧以順序結構實現,隊列以鏈表結構實現。
(4)按照題意要求獨立進行設計,設計結束后按要求寫出設計報告。

一、代碼塊

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef int ElemType;
#define MaxSize 100
#define QNODE struct QNode

typedef struct Node        //車輛信息
{
    char AL;
    int NO;
    int time;
}Node;
typedef struct Stack        //棧定義
{
    struct Node    data[MaxSize];
    int top;
    int num;
}SqStack;
QNODE               //隊列節點
{
    struct Node data;
    QNODE *next;
};
typedef struct linkqueue       //隊列結構體定義
{
    QNODE *front,*rear;
    int num;
}LinkQueue;

SqStack *Init_SeqStack()        //置空棧
{
        SqStack *s;
        s=(SqStack*)malloc(sizeof(SqStack));
        s->top=-1;
        s->num=0;
        return s;
}
LinkQueue *Init_LQueue()        //創建空隊列
{

        LinkQueue *q;
        QNODE *p;
         q=(LinkQueue*)malloc(sizeof(LinkQueue));
        p=(QNODE*)malloc(sizeof(QNODE));
        p->next=NULL;
        q->front=q->rear=p;
        q->num=0;
        return q;
}
int ISEmpty_SeqStack(SqStack *s)        //判斷棧是否為空,棧為空返回1
{
    if(s->top ==-1)
        return 1;
    else
        return 0;
}

int  ISFULL_SeqStack(SqStack *s,int n)    //判斷棧是否已滿,若棧滿返回1
{
    if(s->top==n-1)
        return 1;
    else
        return 0;
}
int ISEmpty_LQueue(LinkQueue *q)        //判斷隊列是否為空,隊列為空返回1
{
    if(q->front==q->rear)
        return 1;
    else
        return 0;
}

void IN_Lqueue(    LinkQueue *q,struct Node s)   //入隊
{
        QNODE *p;
        p=(QNODE*)malloc(sizeof(QNODE));
        p->data=s;
        q->num++;
        p->next=NULL;
        q->rear->next =p;
        q->rear =p;
}
void Push_SeqStack(SqStack *p,struct Node s)   //入棧
{
    p->top ++;
    p->data[p->top]=s;
    p->num++;
}
int POP_SeqStack(SqStack *s,struct Node car)//出棧
{
    SqStack *p;
    int t;
    p=Init_SeqStack();
    while(s->data[s->top].NO !=car.NO)//找到車牌號為P.NO的車,
    {
        Push_SeqStack(p,s->data[s->top]);
        s->top--;
        s->num--;
    }
    t=car.time-s->data[s->top].time;
    s->top--;
    s->num--;
    while(ISEmpty_SeqStack(p)==0)
    {
        Push_SeqStack(s,p->data[p->top]);
        p->top--;
        p->num--;
    }
    return t;
}

struct Node Out_LQueue(LinkQueue *q)   //出隊
{
        QNODE *p;
        p=q->front->next;
        q->front->next=p->next;
        q->num --;
        if(    q->front->next==NULL)
            q->rear=q->front;
        return p->data;
        free(p);
}
int main()
{
    SqStack *parkstack;            //parkstack為表示停車場的棧
    LinkQueue *parkqueue;       //parkqueue為表示便道的隊列
    struct Node car;
    int n,a=0,t;                //n為停車場棧的最大容量
    float f;                    //f為每小時收費
    parkstack=Init_SeqStack();
    parkqueue=Init_LQueue(); //初始界面
    printf("***************停車場信息查詢***************\n");
    printf("請輸入停車場最大容量n=");
    scanf("%d",&n);
    printf("\n請輸入每分鐘收取費用f=");
    scanf("%f",&f);
    printf("\n請輸入車輛信息\n");
    scanf("%c,%d,%d",&car.AL,&car.NO,&car.time);
    while(car.AL!='Q')
    {
       if(car.AL=='A' )
       {                                //    汽車到達的情況
                 if(ISFULL_SeqStack(parkstack,n)==1)        //棧滿的情況
                 {
                    IN_Lqueue(parkqueue,car);                //進入隊列等待
                    printf("這輛車在門外便道上第%d個位置\n",parkqueue->num);
                    printf("\n");
                    printf("請輸入車輛信息\n");
                 }
                 else
                 {
                     Push_SeqStack(parkstack,car);        //入棧
                    printf("這輛車在停車場內第%d個位置\n",parkstack->num);
                    printf("\n");
                    printf("請輸入車輛信息\n");
                 }
       }

       if(car.AL=='L' )                    //汽車離開的情況
       {
                t=POP_SeqStack(parkstack,car);//出棧
                printf("這輛車停留時間為%d,收費為%f。\n",t,f*t);
                printf("\n");
                printf("請輸入車輛信息\n");
                if(ISEmpty_LQueue(parkqueue)==0)   //隊列不為空需要進棧
                  Push_SeqStack(parkstack,Out_LQueue(parkqueue) );
       }
       if(car.AL=='P'&&car.NO==0&&car.time==0 )//顯示停車場的車數
       {
           printf("停車場的車數為%d\n",parkstack->num);
           printf("\n");
           printf("請輸入車輛信息\n");
       }
       if(car.AL=='W'&&car.NO==0&&car.time==0 )//顯示候車場的車數
       {
           printf("候車場的車數為%d\n",parkqueue->num);
            printf("\n");
            printf("請輸入車輛信息\n");
       }
        scanf("%c,%d,%d",&car.AL,&car.NO,&car.time);
    }

    printf("輸入結束\n");
    return 1;
}

二、運行

關鍵字:A&mdash;&mdash;arrive;L&mdash;&mdash;leave;P&mdash;&mdash;park;Q&mdash;&mdash;quit;W&mdash;&mdash;wait.

C語言怎么實現停車場管理

關于“C語言怎么實現停車場管理”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“C語言怎么實現停車場管理”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

象州县| 灵川县| 孟津县| 社旗县| 巴中市| 新兴县| 宁远县| 凤台县| 垣曲县| 于田县| 田阳县| 加查县| 伊宁县| 全州县| 波密县| 于都县| 桦川县| 新宁县| 布拖县| 厦门市| 庆云县| 东平县| 钦州市| 禹州市| 普陀区| 海林市| 庆城县| 合阳县| 宝鸡市| 那坡县| 壶关县| 井研县| 罗山县| 通化县| 吉隆县| 龙南县| 同心县| 瑞昌市| 鹤岗市| 永丰县| 专栏|