1
《数据结构(C++版)》复习提要与实验指导
1.6.3.3 3.3.3 算法描述

3.3.3 算法描述

1. 第1题的算法描述

设硬座车厢用“H”来表示,软座车厢用“S”来表示,先用顺序存储结构定义好栈的5种运算(初始化、进栈、退栈、判栈空、取栈顶元素),即先定义5个子函数,然后从键盘输入n节车厢的代号(顺序随意),若为软座车厢,则进栈,否则输出。这时候,全部硬座车厢输出,接着用循环退栈,输出栈中所有的软座车厢即可。

2. 第1题的算法实现

img89

img90

第2题的算法提示:

可以将停车场定义成一个顺序栈sl,便道定义为一个链队列q,而停车场中的某辆车要离开,则在它后面进停车场的车必须让道,让其离开,故还必须定义一个临时的顺序栈s2,存放让道的车辆。

当有车辆进停车场时,直接进入s1栈,若s1栈满,则进入便道(链队列q)。若有s1中车辆x离开时,先让在x后面进栈的车从s1退栈并进栈到s2中,让x离开并收取停车费,然后,再把s2中所有元素退栈并重新进入s1栈,最后,将链队列q的队头元素进栈到s1中,并删除队头元素。若有链队列q(便道)中的车辆离开时,从链队列中删除该车辆即可,不收停车费。

车辆的数据可以表示为:(车辆编号,到达/离开时间)。第2题的算法实现:

img91

img92

img93

img94

img95

//处理车辆离开的情形

Void delive(ElemType x){

//x为离开的车辆

img96

img97

if(!EmptyQueue(q))

img98

img99

img100

img101

img102