结构Queue是队列的数据结构。同栈一样,也用typedef List Queue 来定义。
queue_init队列通过queue_init初始化。经过初始化的队列才能进行其他操作。因为队列本身就是一个链表,并且初始化过程相同,所以将queue_init定义成list_init。
queue_init的运行时复杂度与list_init相同,都是O(1)。
queue_destroy队列通过queue_destroy销毁。因为队列本身就是一个链表,并且销毁过程相同,所以将queue_destroy定义成list_destroy。
queue_destroy的运行时复杂度与list_destroy相同都是O(n),n代表队列包含元素的个数。
示例1:队列抽象数据类型的头文件
/*queue.h*/ #ifndef QUEUE_H #define QUEUE_H #include <stdlib.h> #include "list.h" /*将队列定义成链表*/ typedef List Queue; /*公开接口*/ #define queue_init list_init #define queue_destroy list_destroy int enqueue(Queue *queue,void *data); int dequeue(Queue *queue,void **data); #define queue_peek(queue)((queue)->head == NULL ? NULL : (queue)->head->data) #define queue_size list_size #endif