编辑代码

#include <stdio.h>
#include <stdlib.h>
 
typedef struct Node {
    int data;
    struct Node* next;
} Node;
 
typedef struct Queue {
    Node* front;  // 队列的头指针
    Node* rear;   // 队列的尾指针
} Queue;
 
// 初始化队列
void initQueue(Queue* q) {
    q->front = NULL;
    q->rear = NULL;
}
 
// 入队操作
void enqueue(Queue* q, int value) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = value;
    newNode->next = NULL;
 
    if (q->rear == NULL) {
        q->front = q->rear = newNode;
    } else {
        q->rear->next = newNode;
        q->rear = newNode;
    }
}
 
// 出队操作
int dequeue(Queue* q) {
    if (q->front == NULL) {
        printf("Queue is empty\n");
        return -1;
    }
 
    Node* temp = q->front;
    int value = temp->data;
 
    if (q->front == q->rear) {
        q->front = q->rear = NULL;
    } else {
        q->front = q->front->next;
    }
 
    free(temp);
    return value;
}
 
// 主函数
int main() {
    Queue q;
    initQueue(&q);
 
    enqueue(&q, 1);
    enqueue(&q, 2);
    enqueue(&q, 3);
 
    printf("Dequeued item is %d\n", dequeue(&q));
    printf("Dequeued item is %d\n", dequeue(&q));
    printf("Dequeued item is %d\n", dequeue(&q));
 
    return 0;
}