首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否有C的标准Queue实现?

C语言标准库中并没有直接提供队列(Queue)的实现。然而,你可以使用数组、链表或其他数据结构来实现队列的基本操作,如入队(enqueue)、出队(dequeue)等。

以下是一个使用链表实现队列的简单例子:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node* next;
} Node;

typedef struct Queue {
    Node* front;
    Node* rear;
} Queue;

Queue* createQueue() {
    Queue* q = (Queue*)malloc(sizeof(Queue));
    q->front = q->rear = NULL;
    return q;
}

void enqueue(Queue* q, int value) {
    Node* temp = (Node*)malloc(sizeof(Node));
    temp->data = value;
    temp->next = NULL;
    if (q->rear == NULL) {
        q->front = q->rear = temp;
        return;
    }
    q->rear->next = temp;
    q->rear = temp;
}

int dequeue(Queue* q) {
    if (q->front == NULL)
        return -1;

    Node* temp = q->front;
    int value = temp->data;

    q->front = q->front->next;
    if (q->front == NULL)
        q->rear = NULL;

    free(temp);
    return value;
}

int main() {
    Queue* q = createQueue();
    enqueue(q, 10);
    enqueue(q, 20);
    printf("%d\n", dequeue(q));
    printf("%d\n", dequeue(q));
    return 0;
}

在这个例子中,我们定义了一个队列结构,它包含两个指针:一个指向队列的前端(front),一个指向队列的后端(rear)。我们还定义了两个函数:enqueue用于在队列的后端添加元素,dequeue用于从队列的前端移除元素。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券