C语言实现数据结构之队列

博客中所有源代码: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);
}


猜你喜欢

转载自blog.csdn.net/shiyipaisizuo/article/details/79001139