C 语言中队列操作的函数详解222


在计算机科学中,队列是一种常用的数据结构,它遵循先进先出 (FIFO) 原则,即最先进入队列的元素也会最先被移除。C 语言为队列操作提供了多种函数,这些函数可以帮助程序员高效地操纵队列数据结构。

以下是 C 语言中常用的队列函数:

1. 创建队列
#include <stdlib.h>
struct Queue {
int *elements;
int size;
int front;
int rear;
};
Queue* createQueue(int initialSize) {
Queue *queue = malloc(sizeof(Queue));
queue->elements = malloc(initialSize * sizeof(int));
queue->size = initialSize;
queue->front = 0;
queue->rear = -1;
return queue;
}

此函数创建一个队列并分配内存以存储元素。它接受队列的初始大小作为参数,并返回指向新创建队列的指针。

2. 入队
void enqueue(Queue *queue, int item) {
if (queue->rear == queue->size - 1) {
printf("Queue is full.");
return;
}
queue->rear++;
queue->elements[queue->rear] = item;
}

此函数将一个元素添加到队列的末尾。如果队列已满,它会打印一条错误消息并返回。

3. 出队
int dequeue(Queue *queue) {
if (queue->front == queue->rear) {
printf("Queue is empty.");
return -1;
}
int item = queue->elements[queue->front];
queue->front++;
return item;
}

此函数从队列的开头移除并返回一个元素。如果队列为空,它会打印一条错误消息并返回 -1。

4. 查看队列头元素
int front(Queue *queue) {
if (queue->front == queue->rear) {
printf("Queue is empty.");
return -1;
}
return queue->elements[queue->front];
}

此函数返回队列中头元素的值而不将其从队列中移除。

5. 查看队列尾元素
int rear(Queue *queue) {
if (queue->front == queue->rear) {
printf("Queue is empty.");
return -1;
}
return queue->elements[queue->rear];
}

此函数返回队列中尾元素的值而不将其从队列中移除。

6. 检查队列是否为空
int isEmpty(Queue *queue) {
return queue->front == queue->rear;
}

此函数检查队列是否为空,如果为空则返回真,否则返回假。

7. 检查队列是否已满
int isFull(Queue *queue) {
return queue->rear == queue->size - 1;
}

此函数检查队列是否已满,如果已满则返回真,否则返回假。

8. 获取队列大小
int size(Queue *queue) {
return queue->size;
}

此函数返回队列的大小。

9. 清空队列
void clearQueue(Queue *queue) {
queue->front = 0;
queue->rear = -1;
}

此函数清空队列,将 front 和 rear 指针重置为初始值。

10. 删除队列
void deleteQueue(Queue *queue) {
free(queue->elements);
free(queue);
}

此函数释放与队列关联的内存,并将其指针设置为 NULL。

示例用法
Queue *queue = createQueue(5);
enqueue(queue, 1);
enqueue(queue, 2);
enqueue(queue, 3);
int item = dequeue(queue); // 出队并打印第一个元素
printf("%d", item); // 输出: 1
item = front(queue); // 查看队列头元素
printf("%d", item); // 输出: 2

这些函数可以帮助程序员轻松地管理队列数据结构,并在各种应用中实现队列操作。

2024-11-28


上一篇:C 语言控制输出宽度

下一篇:C 语言中 %o 格式化的含义