c语言队列怎么写

使用数组或链表可以在 c 语言中实现队列,遵循先进先出 (fifo) 原则。数组实现包括创建队列、enqueue 和 dequeue 操作,而链表实现也包含上述操作。如何用 C 语言实现队列
队列是一种遵循先进先出 (FIFO) 原则的数据

使用数组或链表可以在 c 语言中实现队列,遵循先进先出 (fifo) 原则。数组实现包括创建队列、enqueue 和 dequeue 操作,而链表实现也包含上述操作。

c语言队列怎么写

如何用 C 语言实现队列

队列是一种遵循先进先出 (FIFO) 原则的数据结构。在 C 语言中,可以使用数组或链表来实现队列。

使用数组实现队列

#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 10

<a style="color:#f60; text-decoration:underline;" href="https://www.php.cn/zt/58423.html" target="_blank">typedef</a> struct Queue {
    int items[MAX_SIZE];
    int front, rear;
} Queue;

Queue* createQueue() {
    Queue* queue = (Queue*)malloc(sizeof(Queue));
    queue-&gt;front = -1;
    queue-&gt;rear = -1;
    return queue;
}

void enqueue(Queue* queue, int item) {
    if (queue-&gt;rear == MAX_SIZE - 1) {
        printf("Queue is fulln");
        return;
    }
    
    if (queue-&gt;front == -1) {
        queue-&gt;front = 0;
    }
    
    queue-&gt;rear++;
    queue-&gt;items[queue-&gt;rear] = item;
}

int dequeue(Queue* queue) {
    if (queue-&gt;front == -1) {
        printf("Queue is emptyn");
        return -1;
    }

    int item = queue-&gt;items[queue-&gt;front];
    queue-&gt;front++;
    
    if (queue-&gt;front &gt; queue-&gt;rear) {
        queue-&gt;front = queue-&gt;rear = -1;
    }
    
    return item;
}</stdlib.h></stdio.h>

登录后复制

使用链表实现队列

#include <stdio.h>
#include <stdlib.h>

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

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

Queue* createQueue() {
    Queue* queue = (Queue*)malloc(sizeof(Queue));
    queue-&gt;front = queue-&gt;rear = NULL;
    return queue;
}

void enqueue(Queue* queue, int item) {
    Node* new_node = (Node*)malloc(sizeof(Node));
    new_node-&gt;data = item;
    new_node-&gt;next = NULL;
    
    if (queue-&gt;rear == NULL) {
        queue-&gt;front = queue-&gt;rear = new_node;
    } else {
        queue-&gt;rear-&gt;next = new_node;
        queue-&gt;rear = new_node;
    }
}

int dequeue(Queue* queue) {
    if (queue-&gt;front == NULL) {
        printf("Queue is emptyn");
        return -1;
    }

    Node* temp = queue-&gt;front;
    int item = temp-&gt;data;
    queue-&gt;front = queue-&gt;front-&gt;next;
    
    if (queue-&gt;front == NULL) {
        queue-&gt;rear = NULL;
    }
    
    free(temp);
    return item;
}</stdlib.h></stdio.h>

登录后复制

以上就是c语言队列怎么写的详细内容,更多请关注叮当号网其它相关文章!

文章来自互联网,只做分享使用。发布者:周斌,转转请注明出处:https://www.dingdanghao.com/article/538644.html

(0)
上一篇 2024-05-28 18:00
下一篇 2024-05-28 18:00

相关推荐

联系我们

在线咨询: QQ交谈

邮件:442814395@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信公众号