阅读 ‧ 电子书库 保持ADT的完整
当您定义了一个ADT的接口之后,您只能使用接口函数来处理数据类型。比如,注意DeQueue()依赖EnQueue()来正确设置指针并设置末节点的next指针为NULL。如果在一个使用该ADT的程序中,您直接操作队列的某些部分,将有可能破坏接口包中函数之间的协作关系。

程序清单17.7显示了所有的接口函数,包括EnQueue()中用到的CopyToItem()函数。

程序清单17.7 queue.c实现文件

阅读 ‧ 电子书库

阅读 ‧ 电子书库

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

阅读 ‧ 电子书库

17.4.4 测试队列

在重要程序中使用一个新的设计(比如队列包)之前,应先对这个新设计进行测试。测试的一种方法是编写一个短小的程序。这样的程序有时被称为驱动程序(driver),其惟一用途是进行测试。例如,程序清单17.8使用一个可以添加和删除整数的队列。在运行程序之前,要确保下面这行代码出现在头文件queue.h中:

阅读 ‧ 电子书库

还要记住,需要链接queue.c和use_q.c。

程序清单17.8 use_q.c程序

阅读 ‧ 电子书库

阅读 ‧ 电子书库

下面是一个运行示例,您还应该测试当队列满了之后实现是否还能做出正确的动作。

阅读 ‧ 电子书库

阅读 ‧ 电子书库