首页
学习
活动
专区
工具
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用于从队列的前端移除元素。

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

相关·内容

52秒

衡量一款工程监测振弦采集仪是否好用的标准

1分24秒

Windows和Linux平台的逆向,有很大区别吗?【C++/病毒/内核/逆向】

5分57秒

day05_86_尚硅谷_硅谷p2p金融_判断用户是否登录的实现

3分28秒

两部手机间是如何实现通信的?4G和5G有什么区别?

1分36秒

C语言 | 判断是否是闰年

1分18秒

C语言 | 判断是否为素数

1分29秒

C语言 | 按成绩高低输出学生信息

21分47秒

47-尚硅谷-JDBC核心技术-C3P0数据库连接池的两种实现方式

21分47秒

47-尚硅谷-JDBC核心技术-C3P0数据库连接池的两种实现方式

1分43秒

C语言 | 用指向元素的指针变量输出二维数组元素的值

1分11秒

C++开发的一套医院用的PACS系统

22分20秒

Java程序员进大厂的终极秘诀

领券