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