一、队列是什么
队列是一种先进先出(First In First Out, FIFO)的线性存储结构,限定只能在表的一端(队尾)进行插入元素,表的另一端(队头)进行删除元素,数据元素进队列的过程称为入队,出队列的过程称为出队。
队列实现方式有数组和链表两种方式,本文介绍基于链表的实现方式,可以将队列理解为特殊的链表,只能在链表的头尾两端进行操作。
二、队列的结构体定义
typedef struct node {
int data; /**数据域*/
struct node *next; /**指向下一个节点*/
}queue_node;
typedef struct head {
int len; /**队列长度*/
queue_node *head; /**指向队头*/
queue_node *tail; /**指向队尾*/
}queue_head;
1、新定义了一个结构体queue_head
用来表示队列头,两个指针分别指向队列的两端,len
表示队列长度;
2、在单链表与栈中,由于无需双端操作,头指针的结构体定义与节点一致,所以复用节点的结构体,没有再重新定义。
三、函数清单
函数 | 描述 | 算法复杂度 |
---|