当前位置:编程学习 > C/C++ >>

C语言 停车场管理 急急急!!~~~明天7点之前就要

模拟简单的停车场管理系统
进来一辆车登记后进入车场,如果车场满则进来的车进入便道等候,一旦有车开走则可以直接进入车场。
要求:用一个栈模拟停车场,用一个队列模拟车场外的便道。
主要目的是学会如何运用栈和队列来解决实际问题。
我就要实现这么简单的功能!~~
而且要用C做 !!希望可以帮我弄出来
多谢!~~~~
分数可以再加的!!~~~~
答案:才有时间帮你写
你自己看看吧
先要设定车场的容量;
按0是车进车场,大于容量进入便道
按-1是车退出车场,仔细看是-1不是1啊,车场的车辆数小于容量,便道车进入车场,
用了栈和队列,
按-2,仔细点是-2,不是2,退出系统哦
每次我都显示一下当前车场和便道的车的编号,已经走了的车不显示
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

int CARNO = 0;
typedef struct Node Node;

struct Node
{
int iCarNo;
struct Node* next;
};


void PushCarPost( Node ** pstHead, int iCarNo)
{
Node* preNode = (*pstHead);
Node* pstNode = (*pstHead)->next;
Node* temNode = malloc( sizeof(Node) );
while ( NULL != pstNode )
{
preNode = pstNode;
pstNode = pstNode->next;
}
temNode->iCarNo = iCarNo;
temNode->next = NULL;
temNode->next = preNode->next;
preNode->next = temNode;
return;
}

void stackPop( Node ** pstHead)
{
Node* pstNode = (*pstHead)->next;
Node* preNode = (*pstHead);
while ( NULL != pstNode->next )
{
preNode = pstNode;
pstNode = pstNode->next;
}
if ( 0 == CARNO )
{
printf("没有车在停车场\
");
return;
}
printf("\
car编号: %d离开停车场\
",preNode->iCarNo);
CARNO--;
preNode->next = pstNode->next;
free(pstNode);
return;
}

void queuePop( Node ** pstHead, Node * temNode )
{
Node* pstNode = (*pstHead)->next;
(*pstHead)->next = pstNode->next;
temNode->iCarNo = pstNode->iCarNo;
temNode->next = NULL;
}

void display( Node ** pstHead )
{
Node* pstNode = (*pstHead)->next;
while ( NULL != pstNode )
{
printf(" %d ", pstNode->iCarNo);
pstNode = pstNode->next;
}
printf("\
");
}

int main( int argc, char* argv[] )
{
Node * pstStackHead = (Node*)malloc( sizeof(Node) );
Node * pstQueueHead = (Node*)malloc( sizeof(Node) );
Node * temNode = (Node*)malloc( sizeof(Node) );
Node * pstQueue;
int iCar, iCarSize, iCarNo;
pstStackHead->iCarNo = -1;
pstStackHead->next = NULL;
pstQueueHead->iCarNo = -1;
pstQueueHead->next = NULL;
pstQueue = pstQueueHead->next;
printf("设定可容纳的车的量数:\
");
scanf("%d", &iCarSize);
printf("欢迎来到XX停车场\
");
printf("0->汽车进入停车场\
");
printf("-1->汽车离开停车场\
");
printf("-2->退出系统\
");
scanf("%d",&iCar);
while( -2 < iCar )
{
if ( 0 == iCar )
{
printf("请输入汽车编号(1到999999)以便登记:停车场最多可容纳%d量车\
",iCarSize);
if ( CARNO < iCarSize)
{
scanf("%d",&iCarNo);
PushCarPost( &pstStackHead, iCarNo);
CARNO++;
}else
{ scanf("%d",&iCarNo);
PushCarPost(&pstQueueHead, iCarNo);
}

}else if ( -1 == iCar )
{
if ( 0 == CARNO )
{
printf("操作错误!停车场没有车辆\
");
exit(0);
}
if ( CARNO >= iCarSize )
{
stackPop(&pstStackHead);
}else
{
pstQueue = pstQueueHead->next;
if ( NULL != pstQueue )
{
queuePop( &pstQueueHead, temNode );
PushCarPost(&pstStackHead, temNode->iCarNo);
CARNO++;
}else
{
stackPop(&pstStackHead);
}
}
}
printf("/*********当前停车场内车辆编号*******/\
");
display(&pstStackHead);
printf("/*********当前便道内车辆编号*********/\
");
display(&pstQueueHead);
printf("/***********************************/\
");
printf("\
\
欢迎来到XX停车场\
");
printf("0->汽车进入停车场\
");
printf("-1->汽车离开停车场\
");
printf("-2->退出系统\
");
scanf("%d",&iCar);
}
return 0;
}

上一个:Matlab,visual foxpro,pascal和C语言各自的用处以及横向比较
下一个:求数据结构课程设计“八皇后问题”C语言(有注解)

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,