c模拟停车场管理系统

该博客给出了一个基于栈和队列的停车系统代码。代码中定义了栈和队列的结构体及相关操作函数,如初始化、入栈、出栈、入队、出队等。主函数提供了停车、出停车场、查看状态等功能选项,可实现车辆的停放、离开及状态查询,并能计算停车费用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>

#include<stdlib.h>

#include<time.h>   

#define D (24*60*60)  

#define H (60*60)  

#define M (60)

#define OK 1

#define ERROR 0

#define MAX_STACK_SIZE 10      

typedef int StackData;

typedef int QueueData;

typedef int ElemType;

typedef struct Node

{

    int No;

int Timeinit;

}Node;

typedef struct QueueNode

{

    struct Node data;      

    struct QueueNode* next;       

} QueueNode;

typedef struct LinkQueue  

{

    struct QueueNode *rear, *front;

} LinkQueue;

 

 

typedef struct SqStackNode   

{  

    int top;

int bottom;

    struct Node stack_array[MAX_STACK_SIZE+1] ;

}SqStackNode ;

 

SqStackNode* InitStack()

{    

SqStackNode *S=(SqStackNode *)malloc(sizeof(SqStackNode));

    S->bottom=S->top=0;  

return (S);

}

int FullStack(SqStackNode *S)  

{

    return S->top==MAX_STACK_SIZE;

}

int pushStack(SqStackNode *S,Node data)

{  

    if(FullStack(S))

    {

return ERROR;

    }

    S->top++ ;                     

    (S->stack_array[S->top]).No=data.No  ;       

    (S->stack_array[S->top]).Timeinit=data.Timeinit;      

    return OK;       

}

int popStack(SqStackNode *S,Node *data)  

{  

    if(S->top==0)

    {

return ERROR;    

    }

    (*data).No=(S->stack_array[S->top]).No;

    (*data).Timeinit=(S->stack_array[S->top]).Timeinit;

    S->top--;  

    return OK;  

}

int FinfStack(SqStackNode *S,Node data)   

{

    int i;

    if(S->top==0)

    {

  return ERROR;    

}

 

for(i=1;i<=S->top;i++)

{

    if(S->stack_array[i].No == data.No)

    {

        return OK;

    }

}

return ERROR;  

}

 

 

 

LinkQueue* InitQueue (void)    

{

    LinkQueue *Q=( LinkQueue * ) malloc( sizeof ( LinkQueue ) );

    Q->rear=Q->front=NULL;

return Q;

}

 int QueueEmpty ( LinkQueue *Q )   

 {

    return Q->front == NULL;

}

 

int GetFrontQueue ( LinkQueue *Q, Node *data )

{

    if ( QueueEmpty (Q) ) return 0;

    (*data).No = (Q->front->data).Timeinit;  return 1;

}

int EnQueue ( LinkQueue **Q, Node data)  

{

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

    (p->data).No = data.No;

    (p->data).Timeinit = data.Timeinit;

p->next = NULL;

    if ( (*Q)->front == NULL )

    {

(*Q)->front = (*Q)->rear = p;

    }

    else

{

    

(*Q)->rear = (*Q)->rear->next = p;

}

    return 1;

}

int DeQueue ( LinkQueue **Q, Node *data)  

{

    if ( QueueEmpty (*Q) )

{

    return 0;

}

    QueueNode *p = (*Q)->front;

    (*data).No = p->data.No;                       

    (*data).Timeinit = p->data.Timeinit;  

    (*Q)->front = (*Q)->front->next;

    if ((*Q)->front == NULL) (*Q)->rear = NULL;

    free (p);

    return 1;

}

int now_time(void)   

{  

    time_t t1;   

    time(&t1);   

    int time=t1%D;  

    return time;  

}

 

Parking(LinkQueue **Q,SqStackNode *S)

{

    int i,time_now;

Node data;

printf("停入车的车牌:\n");

scanf(" %d",&data.No);

 

for(i=1;i<=S->top;i++)

{

 

if(S->stack_array[i].No == data.No)

{

    printf("已有此号\n");

return ;

}

}

 

EnQueue(Q,data);

while(!QueueEmpty(*Q))

{

    if(FullStack(S))

    {

printf("等待中\n");

        break;

    }

else

{

    DeQueue(Q,&data);

data.Timeinit=now_time();

pushStack(S,data);

printf("已停入\n");

}

}

return ;

}

leaving(SqStackNode *S,SqStackNode *B,LinkQueue **Q)

{

    if(S->bottom == S->top)

    {

        printf("车位已空:\n");

    }

else

{

    Node data;

        int i,h,m,s;

float charge;

int time_now,parking_time;

printf("要离开的车号:\n");

scanf(" %d",&i);

    data.No=i;

if(!FinfStack(S,data))

{

    printf("查无此车\n");

return ;

}

else

{

while(S->stack_array[S->top].No != i)

{

popStack(S,&data);

pushStack(B,data);

}

popStack(S,&data);

time_now=now_time();

parking_time=time_now-data.Timeinit;

 

h = parking_time/H;

     parking_time = parking_time%H;

     m = parking_time/M;

     s = parking_time%M;

charge = 20*h+0.5*(m+1);

printf("出停车场的车号:%d   停车时间:%d:%d:%d   总费用(20¥/h):%g¥\n",data.No,h,m,s,charge);

 

while(B->bottom != B->top)

{

popStack(B,&data);

pushStack(S,data);

}

while(!FullStack(S)&&(!QueueEmpty(*Q)))  

{

DeQueue(Q,&data);

data.Timeinit=now_time();

pushStack(S,data);

}

}

 

}

}

situation(SqStackNode *S,LinkQueue **Q)

{

    Node data;

    int i;

    int time_now,parking_time;

    int h,m,s;

    struct QueueNode *p;

int wait_count=0;

p=(*Q)->front;

if(p == NULL)

{

    printf("等待中的车辆 :0\n");

}

else

{

    do

    {

        wait_count++;

p=p->next;

    }while(p!=NULL);

printf("等待中的车辆:%d\n",wait_count);

}

 

printf("车牌号:   ");

for(i=1;i<=S->top;i++)

{

    printf("%-10d",S->stack_array[i].No);

    

    if(S->stack_array[i].No == data.No)

    {

        return OK;

    }

}

printf("\n已停时间:");

for(i=1;i<=S->top;i++)

{

    time_now = now_time();

parking_time = time_now - S->stack_array[i].Timeinit;

h = parking_time/H;

parking_time = parking_time%H;

m = parking_time/M;

s = parking_time%M;

printf("%02d:%02d:%02d  ",h,m,s);

}

printf("\n");

 

}

 

int main()

{

    int i;

Node data;

SqStackNode *park;

SqStackNode *back;

    LinkQueue *wait;  

park=InitStack();

back=InitStack();

wait=InitQueue();

while(1)

{

 

printf("----------停车系统---------\n");

printf("                1.停车   \n");

printf("                2.出停车场   \n");

printf("                3.状态 \n");

printf("                4.退出      \n");

scanf(" %d",&i);

switch(i)

{

case 1:

{

 

Parking(&wait,park);

setbuf(stdin,NULL);

getchar();

break;

}

case 2:

    {

leaving(park,back,&wait);

setbuf(stdin,NULL);

getchar();

break;

}

case 3:

{

 

 

situation(park,&wait);

setbuf(stdin,NULL);

getchar();

break;

}

case 4:

{

return 0;

}

default:

{

break;

}

}

}

return 0;

}

 

 

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值