数据结构队列(C语言实现)

文章目录

    • 1、队列的概念及结构
    • 2、队列的实现
    • 3、结构体的设计
    • 4、初始化队列
    • 5、队尾入队列
    • 6、队头出队列
    • 7、获取队列头部元素
    • 8、获取队列队尾元素
    • 9、获取队列中有效元素个数
    • 10、检测队列是否为空
    • 11、销毁队列

1、队列的概念及结构

队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出
FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列:进行删除操作的一端称为队头
数据结构队列(C语言实现)_第1张图片

2、队列的实现

队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。
数据结构队列(C语言实现)_第2张图片

3、结构体的设计

// 链式结构:表示队列 
typedef struct QListNode 
{
    
	struct QListNode* _next; 
	QDataType _data; 
}QNode; 
 
// 队列的结构 
typedef struct Queue 
{
    
	QNode* _front; 
	QNode* _tail; 
}Queue; 

这里呢,和之前数据结构的设计不太一样,QNode结构体是用来存放数据的,而Queue结构体是用来存放QNode结构体的指针的,这里有两个指针,因为QNode的结构是单链表,而队列是只有尾插的,单链表结构的尾插效率跟数组相比比较低,所以定义了一个tail指针,指向队列的尾指针,从而达到O(1)的插入效率。

4、初始化队列

void QueueInit(Queue* q)

{
   
    assert(q);
	q->_front = q

你可能感兴趣的:(数据结构,c语言)