回复 30楼 九转星河
如果作为队列或栈来使用,有一个不大不小的问题,那就是数据没有封装,使用者可以触碰到数据,并且修改他们。避免用户触碰数据的做法有两个,第一那就是将数据跟函数绑在一起,不允许用户访问它们;第二个做法,要求实现和接口彻底分离,在头文件中,数据类型是一个typedef定义的别名,数据类型的定义是在实现文件中完成的,由于使用者不知道这个结构的具体信息,因此也就无法访问它们了。
例如:接口中的声明如下
typedef struct Stack_T *Stack_T;
实现文件中才对这个结构进行定义
struct Stack_T { XXXXXXXXXXXXXX; };
为什么不在接口中对结构进行完整的定义呢?因为使用者是可以看见的,犹如可以看见stdio.h中定义的FILE类型的结构的具体信息。(当然这是对于栈和队列而言的,某些抽象数据类型披露具体信息反而是有好处的。)
PS:有两处Warning:(马丹:165、173行在哪儿。)
[此贴子已经被作者于2017-4-29 17:55编辑过]
09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。