本文主要涉及如何用C语言实现队列。
什么是队列?
队列是一种特殊的线性数据结构,它只允许在队尾插入元素,在队头删除元素,符合“先进先出”(FIFO)的原则。
如何用C语言实现队列?
在C语言中,可以使用数组或链表来实现队列。
1. 数组实现队列
ttt指向队头元素的前一个位置。具体实现代码如下
“`ce MXSIZE 100t queue[MXSIZE];tt = 0, rear = -1;
// 判断队列是否为空tpty() {t >rear;
// 判断队列是否已满t is_full() { rear == MXSIZE – 1;
// 入队queuet data) {
if (is_full()) {tf”);;
}
queue[++rear] = data;
// 出队t dequeue() {pty()) {tfpty”); -1;
}t++];
2. 链表实现队列
使用链表实现队列需要定义一个链表结构体,包含一个指向队头的指针head和一个指向队尾的指针tail。具体实现代码如下
typedef struct Node {t data;ext;
} Node;
typedef struct ueue {
Node head;
Node tail;
} ueue;
// 初始化队列it_queue(ueue q) {
q->head = q->tail = NULL;
// 判断队列是否为空tpty(ueue q) { q->head == NULL;
// 入队queuet data) {ewodealloc(sizeof(Node));ewode->data = data;ewodeext = NULL;pty(q)) {ewode;
} else {extewode;ewode;
}
// 出队t dequeue(ueue q) {pty(q)) {tfpty”); -1;
}t data = q->head->data;p = q->head;ext;p); data;
队列有什么应用场景?
队列常用于模拟排队等待的场景,例如操作系统中的进程调度、打印队列、网络数据包的传输等。还可以用于实现广度优先搜索算法。