车辆问题 算法与数据结构

发布 2021-05-02 17:46:28 阅读 2393

实验题目4:模拟停车场管理的问题:高停车场只有一个可停放几辆汽车的狭长通道,且只有一个大门可汽车进出。

汽车在停车场按车辆到来的先后顺序依次排列,若车场内已停满几辆汽车,则后来的汽车只能在门外的便道上等候,一旦停车场内有车开走,则排在便道上的第一辆车即可进入;当停车场内某辆车要离开时,由于停车场是狭长的通道,在它之后开入的车辆必须先退出车场为它让道,待该辆车开出大门后,为它让路的车辆在按原次序进入车场。在这里假设汽车不能从便道上开走。度设计一个停车场管理程序。

一。要解决的问题:

二。算法基本思想描述:建立两个栈和一个队,设停车场里为一个栈1,通道为一个队,汽车要进栈就得按照栈的规则来进栈1,如果栈1里满了就入队,如果汽车要出停车场就按栈的规则出栈,出栈之后就进入另一个栈2,直到要出场的那辆车出场为止,接着再把栈2里的汽车出栈进入栈1,进完之后,如果通道上有汽车,则把队里的汽车出队进入到栈1,直到栈1满为止。

三。设计。1. 数据结构的设计:

#define maxsize 5

#define max 20

typedef int datatype;

typedef struct栈的类型定义*/

datatype data[maxsize栈里的数*/

int top栈顶*/

seqstack;

typedef struct队的类型定义*/

sequeue;

2. 算法的设计:

1) 栈和队的初始化。

2) 先输入x为车场里的车数量,3.模块结构及功能:

4.主要模块算法描述。

四。源程序清单。

#include""

#define maxsize 5

#define max 20

typedef int datatype;

typedef struct

datatype data[maxsize];

int top;

seqstack;

seqstack *init_seqstack()

int push_seqstack(seqstack *s,datatype x)

typedef struct

sequeue;

sequeue *init_sequeue()

int push_sequeue(sequeue *sq,datatype x)

main()

datatype k;

seqstack *s1,*s2;

sequeue *sq;

int i,j,m,x,n;

s1=init_seqstack();

s2=init_seqstack();

sq=init_sequeue();

printf("input the car in the station's number(0<=x<=5):x=")

scanf("%d",&x);

for(i=1;i<=x;i++)

printf("input 0(out) or 1(in):"

scanf("%d",&n);

if(n==1)

if(n==0)

printf("input the out car's number:")

scanf("%d",&i);

while(s1->top!=i)

s1->top=i-1;

while(s2->top!=0)

if(sq->front!=sq->rear)

printf("the car in the station is:")

for(i=1;i<=s1->top;i++)printf("%d ",s1->data[i]);

printf("the car out the station is:")

for(i=sq->front;irear;i++)printf("%d ",sq->data[i]);

getchar();getchar();

五。测试数据及测试结果:

数据:x= 4, 1 , m=3数据:x= 3, 0 , m=1,结果:

the car in the station is :1 2 3 4 5结果:the car in the station is :

2 3

the car out the station is: 6 7the car out the station is:

六。心得体会。

一。要解决的问题:

二。算法基本思想描述:

三。设计。1.数据结构的设计。

#define m 3

#define n 4

int maze[m+2][n+2];

typedef struct定义方向类型*/

item;item move[8]=,

typedef struct定义datatype 类型*/

datatype;

typedef struct定义栈*/

seqstack;

typedef struct /*定义队*/

sqtype;

sqtype sq[num];

int front,rear;

2.算法的设计。

3.模块结构及功能:

4.主要模块算法描述。

四。源程序清单。

#include""

#define m 3

#define n 4

#define num m*n

typedef struct

item;item move[8]=,

typedef struct

datatype;

#define maxsize 1024

typedef struct

seqstack;

seqstack *init_seqstack()

int empty_seqstack(seqstack *s)

int push_seqstack(seqstack *s,datatype x)

{if(s->top==maxsize-1)return 0;

数据结构与算法

本章知识要点 算法的基本概念 数据结构的定义 线性表的定义和存储 树 二叉树的定义和存储 查找与排序算法。算法 algorithm 是一组有穷的规则,规定了解决某一特定类型问题的一系列运算,是对解题方 与完整的描述。算法是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中...

算法与数据结构

学院专业姓名学号。实验1 线性表的操作 12学时 问题描述 假设一个班级内有n个学生,定义一个学生类和一个班级类。学生类中包括学号 姓名 性别 年龄 专业等属性 班级类包括一个学生对象链表。定义如下 class student class myclass student stu head 链表表头指...

算法与数据结构

1 简述算法的概念及其五个重要特性。2 下图是用邻接表存储的图,请画出此图,写出其邻接矩阵以及从c点开始分别按广度优先搜索和深度优先搜索遍历该图的结果。给定一棵用二叉链表表示的二叉树,其根指针为root,编写求此二叉树叶结点个数的算法,要求先写出二叉链表的类型定义。2.编写简单选择排序的算法。1 用...