数据结构课程设计----停车场管理系统(栈和队列)

本文介绍了如何使用栈和队列设计一个停车场管理系统。车辆按到达顺序停放在栈中,离开时后面的车辆需退栈让路。汽车在便道上等候形成一个队列,当停车场有空位时,队列中的第一辆车进入。文章详细阐述了系统的存储结构和操作流程。

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

题目:

设停车场(如下图1所示)内只有一个可停放几量汽车的狭长通道,且只有一个大门可供汽车进出。汽车在停车场内按车辆到达时的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已经停满几量汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆汽车即可开入;当停车场内某车辆要离开时,由于停车场是狭长的通道,在它之后开入车场的车辆必须先退出车场为它让路,待该车辆开出大门外后,为它让路的车辆再按原次序进入车场。在这里假设汽车不能从便道上开走。试设计一个停车场管理程序(这里只是一个假想的停车场管理,并不代表实际的停车场管理)。

在这里插入图片描述

分析:

汽车在停车场内进出是按照栈的运算方式来实现的,先到的先进停车场;停车场的汽车离开停车场时,汽车场内其它汽车为该辆汽车让路,也是按栈的方式进行;汽车在便道上等候是按队列的方式进行的。因此,将停车场设计成一个栈,汽车让路也需要另一个栈来协助完成,汽车进出便道用队列来实现。
即两个栈,一个停车栈,一个让车栈;一个队列,便道队列。

*存储结构如下:

 #define  stacksize  10
 typedef  struct  sqstack
 {
   
   
  int  data[stacksize];
  int  top;
 } SqStackTp;
typedef struct  linked_queue
{
   
   
  int  data;
  struct  linked_queue  * next;
}LqueueTp;
typedef  struct 
{
   
   
  LqueueTp  *front ,  *rear ;
} QueptrTp;

要求:
1)接受命令和车号,若是汽车要进停车场,先判断停车场栈是否满,若不满,则汽车入栈,否则汽车进入便道队列等候。
2)若是汽车要离开停车场,为给汽车让路,将停车场栈上若干辆汽车入临时栈,等这辆车出停车场后,临时栈中的汽车出栈,在回到停车场栈,然后看便道队列是否为空,若不空则说明有汽车等候,从队头取出汽车号,让该车进入停车场栈。
3)重复1),2)直到为退出命令(车号为0或负数)。
代码:

#include <iostream>
#include <bits/stdc++.h>
#define  stacksize  3
using namespace std;

typedef struct sqstack
{
   
   
  int data[stacksize];
  int top;
}SqStackTp;
typedef struct linked_queue
{
   
   
  int data;
  struct linked_queue * next;
}LqueueTp;
typedef struct
{
   
   
  LqueueTp *front ,*rear ;
}QueptrTp;

int stackin(SqStackTp &S,int x) //x为车号
{
   
   
   if(S.top<stacksize)
   {
   
   
       S.data[S.top]=x;
       S.top++;
       return 0;
   }
   else
    <
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值