c语言编程笔录

首页 >   > 笔记大全

笔记大全

c语言队列函数

更新时间:2024-01-23

前言:

队列是一种常见的数据结构,它遵循先进先出(FIFO)的原则。在C语言中,可以使用数组来实现队列。本文将介绍实现一个基本的队列的C语言函数。

代码实现:

下面是一个使用数组实现队列的C语言函数的示例:

#include 

#define MAX_SIZE 100

typedef struct {
    int data[MAX_SIZE];
    int front;
    int rear;
} Queue;

void initQueue(Queue *q) {
    q->front = -1;
    q->rear = -1;
}

int isEmpty(Queue *q) {
    return (q->front == -1 && q->rear == -1);
}

int isFull(Queue *q) {
    return (q->rear == MAX_SIZE - 1);
}

void enqueue(Queue *q, int x) {
    if (isFull(q)) {
        printf("队列已满,无法入队!\n");
        return;
    }
    if (isEmpty(q))
        q->front = q->rear = 0;
    else
        q->rear++;
    q->data[q->rear] = x;
}

void dequeue(Queue *q) {
    if (isEmpty(q)) {
        printf("队列为空,无法出队!\n");
        return;
    }
    if (q->front == q->rear)
        q->front = q->rear = -1;
    else
        q->front++;
}

int getFront(Queue *q) {
    if (isEmpty(q)) {
        printf("队列为空!\n");
        return -1;
    }
    return q->data[q->front];
}

void printQueue(Queue *q) {
    if (isEmpty(q)) {
        printf("队列为空!\n");
        return;
    }

    printf("当前队列中的元素为:");
    for (int i = q->front; i <= q->rear; i++)
        printf("%d ", q->data[i]);
    printf("\n");
}

代码说明:

上述代码中,定义了一个结构体`Queue`,包含一个数据数组`data`、一个指向队列前端的`front`指针和一个指向队列后端的`rear`指针。函数`initQueue`用于初始化队列,函数`isEmpty`和`isFull`分别用于判断队列是否为空和是否已满。

函数`enqueue`用于入队操作,将元素添加到队列的末尾。如果队列已满,则输出提示信息。函数`dequeue`用于出队操作,将队列的前端元素移除。如果队列为空,则输出提示信息。

函数`getFront`用于返回队列的前端元素。如果队列为空,则输出提示信息。函数`printQueue`用于打印队列中的所有元素。

总结:

通过上述代码,我们可以实现一个基本的队列,包括队列的初始化、判空、判满、入队、出队、获取前端元素和打印队列等操作。队列是一种常用的数据结构,在实际应用中具有广泛的应用场景,如任务调度、消息缓冲等。