实验题目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 用...