欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實(shí)現(xiàn)停車場管理

 更新時間:2019年12月27日 14:40:09   作者:夏.謹(jǐn)之  
這篇文章主要為大家詳細(xì)介紹了C語言課程設(shè)計之停車場管理問題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

C語言課程設(shè)計之停車場管理問題,供大家參考,具體內(nèi)容如下

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

2.基本要求

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

一、代碼塊:

#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        //隊列節(jié)點(diǎn)
{
 struct Node data;
 QNODE *next;
};
typedef struct linkqueue    //隊列結(jié)構(gòu)體定義
{
 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()    //創(chuàng)建空隊列
{

 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為每小時收費(fèi)
 parkstack=Init_SeqStack();
 parkqueue=Init_LQueue(); //初始界面
  printf("***************停車場信息查詢***************\n");
 printf("請輸入停車場最大容量n=");
 scanf("%d",&n);
 printf("\n請輸入每分鐘收取費(fèi)用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' )
  {    // 汽車到達(dá)的情況
   if(ISFULL_SeqStack(parkstack,n)==1) //棧滿的情況
   {
   IN_Lqueue(parkqueue,car);  //進(jìn)入隊列等待
    printf("這輛車在門外便道上第%d個位置\n",parkqueue->num);
   printf("\n");
   printf("請輸入車輛信息\n");
   }
   else
   {
   Push_SeqStack(parkstack,car); //入棧
   printf("這輛車在停車場內(nèi)第%d個位置\n",parkstack->num);
   printf("\n");
   printf("請輸入車輛信息\n");
   }
  }

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

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

二、運(yùn)行:

關(guān)鍵字:A——arrive;L——leave;P——park;Q——quit;W——wait.

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言實(shí)現(xiàn)BMP圖像處理(彩色圖轉(zhuǎn)灰度圖)

    C語言實(shí)現(xiàn)BMP圖像處理(彩色圖轉(zhuǎn)灰度圖)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)BMP圖像處理,彩色圖轉(zhuǎn)灰度圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 詳解C++ STL中vector擴(kuò)容機(jī)制

    詳解C++ STL中vector擴(kuò)容機(jī)制

    vector是表示可以改變大小的數(shù)組的序列容器,就像數(shù)組一樣,vector對其元素使用連續(xù)的存儲位置,這篇文章將給大家詳細(xì)介紹C++ STL中vector擴(kuò)容機(jī)制,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 浮點(diǎn)數(shù)在計算機(jī)中存儲方式是怎樣的

    浮點(diǎn)數(shù)在計算機(jī)中存儲方式是怎樣的

    這篇文章介紹了浮點(diǎn)數(shù)在計算機(jī)中是如何存儲的,講解的比較詳細(xì),有需要的朋友可以參考一下。
    2016-06-06
  • C和C++11之enum枚舉的具體使用方法

    C和C++11之enum枚舉的具體使用方法

    這篇文章主要介紹了C和C++11之enum枚舉的具體使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C++示例講解vector容器

    C++示例講解vector容器

    這篇文章主要介紹了C++?容器?Vector?的使用方法,Vector?是一個能夠存放任意類型的動態(tài)數(shù)組,有點(diǎn)類似數(shù)組,是一個連續(xù)地址空間,下文更多詳細(xì)內(nèi)容的介紹,需要的小伙伴可以參考一下
    2022-07-07
  • C語言實(shí)現(xiàn)簡單的飛機(jī)大戰(zhàn)游戲

    C語言實(shí)現(xiàn)簡單的飛機(jī)大戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單的飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++實(shí)現(xiàn)數(shù)組中元素組合出最大值

    C++實(shí)現(xiàn)數(shù)組中元素組合出最大值

    這篇文章主要介紹了C++實(shí)現(xiàn)數(shù)組中元素組合出最大值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • C++無法重載點(diǎn)符號、::、sizeof等的原因

    C++無法重載點(diǎn)符號、::、sizeof等的原因

    這篇文章主要介紹了C++無法重載點(diǎn)符號、::、sizeof等的原因的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • C++函數(shù)指針詳解

    C++函數(shù)指針詳解

    這篇文章主要介紹了C++函數(shù)指針詳解,通過文字描述C++函數(shù)指針基礎(chǔ)概念,內(nèi)涵詳細(xì)的代碼實(shí)現(xiàn)和解析,希望對你能夠有所幫助
    2021-06-06
  • C++利用LuaIntf調(diào)用Lua的方法示例

    C++利用LuaIntf調(diào)用Lua的方法示例

    這篇文章主要給大家介紹了關(guān)于C++利用LuaIntf調(diào)用Lua以及利用lua-intf來調(diào)用C++函數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-11-11

最新評論