程序设计最重要的是确定程序将来完成哪些工作,以及什么工作该有什么子程序完成,这是工程由繁化简的前提。只有在确定程序将要完成的工作之后,才能确定将要采取哪种数据类型,有的语言数据类型需要自己构建,比如C,有的语言这不用。但是不是核心,核心是先确定工作,然后由工作来确定数据结构。
以《数据结构与程序设计》114页的例子来说,这是一个模拟机场飞机起飞和降落的程序。首先我们先确定这个模拟要做的工作有哪些工作:
在任意一个仿真时刻,所做的工作如下:
1,如果有飞机要降落,则先把这个飞机的数据存储在一个数据结构中。
2,如果有飞机需要起飞,则也是先把起飞的飞机数据存储在另外一个数据结构中。
3,处理起飞和降落的飞机,如果表示降落飞机的数据结构中还有数据,则先处理降落的飞机,等到降落的飞机处理完才处理起飞的飞机。
4,如果这个时刻即没有起飞的飞机,也没有降落的飞机,则用一个空闲函数来处理,记录下空闲时间
5,最后做总结。
从这几个工作中,我们来确定数据结构,首先要考虑什么地方需要构建我们自己的数据结构。飞机的数据需要构建个数据结构,还要有一个数据结构来存储许多飞机的数据。所以,在这个工作中需要构建两个数据结构。接下来要考虑的是数据结构中包含了哪些内容?先看飞机的数据Plane,这里飞机的数据应该包含飞机的id以及飞机到来的时间。所以Plane可以直接构造一个结构体,这里顺便说一句,结构体不就是自定义的数据结构吗,所以数据结构也没有那么难以理解。
然后我们来看存储飞机数据的数据结构Plane_Store,首先要考虑这个数据结构要满足实际中的什么要求,对于飞机起飞和降落,肯定是先入先出了,所以这个数据结构的原型就很容易了,应该是个队列Queue。从这我们可以看出,要选择什么样的数据结构,首先要看实际要求,由于数据结构本身就相当于存储单元,所以本质上我们看的就是数据的写入和读出的顺序以及其他的特征。接下来就是确定数据结构所需要的操作,其实很多数据结构都很相似的,包括数据的压入,数据的推出,获取数据结构的size,清除所有的数据结构。