博客中所有源代码:Github托管项目地址
队列的介绍
队列的一个显著特征是它按照先进先出(FIFO)的方式存储和检索元素。这就意味着先存入队列的元素将首先被删除。我们可以把队列形象地看成再邮局排队办业务的一队人。在计算机中,将一个元素放置到队尾,称为“入队操作”;将一个元素从对头删除,称为“出队”操作。
队列头文件queue.h
#ifndef QUEUE_H #define QUEUE_H #include <stdlib.h> #include "list.h" typedef List Queue; #define queue_init list_init #define queue_destory list_destory int queue_enqueue(Queue *queue, const void *data); int queue_dequeue(Queue *queue, void **data); #define queue_peek(queue) ((queue)->head == NULL ? NULL : (queue)->head->data) #define queue_size list_size #endif
功能实现与分析:
1.队列通过queue-enqueue往队列尾部插入元素。
2.队列通过queue_dequeue从队列头部删除元素。
3.queue_peek和queue_size这是队列的两个宏定义,实现队列的两种简单的操作。queue_peek用来获取队列头元素的信息而不使头元素出队。 queue_size用来获取队列的大小。这两种操作都是通过访问Queue的结构成员来实现的。
队列主文件queue.c
#include <stdlib.h> #include "queue.h" #include "list.h" int queue_enqueue(Queue *queue, const void *data) { return list_ins_next(queue, list-tail(queue), data); } int queue_dequeue(Queue *queue, void **data) { return list_rem_next(queue, NULL, data); }