c语言队列实现代码
以下是一个用C语言实现队列的代码示例:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
void initQueue(Queue *queue) {
queue->front = 0;
queue->rear = 0;
}
int isEmpty(Queue *queue) {
return queue->front == queue->rear;
}
int isFull(Queue *queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
void enqueue(Queue *queue, int value) {
if (isFull(queue)) {
printf("Queue is full.\n");
return;
}
queue->data[queue->rear] = value;
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
int dequeue(Queue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
int value = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
return value;
}
int main() {
Queue queue;
initQueue(&queue);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
printf("Dequeued: %d\n", dequeue(&queue));
printf("Dequeued: %d\n", dequeue(&queue));
printf("Dequeued: %d\n", dequeue(&queue));
return 0;
}
这个代码示例中,我们使用一个数组来存储队列的元素,使用front
和rear
两个指针来表示队列的头部和尾部。initQueue
函数用于初始化队列,isEmpty
函数用于判断队列是否为空,isFull
函数用于判断队列是否已满,enqueue
函数用于入队操作,dequeue
函数用于出队操作。在main
函数中,我们演示了如何使用队列进行入队和出队操作。
队列是一种先进先出(First-In-First-Out,FIFO)的数据结构,可以用于实现缓冲区、任务调度等场景。下面是一个用C语言实现队列的完整代码:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
void initQueue(Queue *queue) {
queue->front = 0;
queue->rear = 0;
}
int isEmpty(Queue *queue) {
return queue->front == queue->rear;
}
int isFull(Queue *queue) {
return (queue->rear + 1) % MAX_SIZE == queue->front;
}
void enqueue(Queue *queue, int value) {
if (isFull(queue)) {
printf("Queue is full.\n");
return;
}
queue->data[queue->rear] = value;
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
int dequeue(Queue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
int value = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
return value;
}
void printQueue(Queue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return;
}
printf("Queue: ");
int i = queue->front;
while (i != queue->rear) {
printf("%d ", queue->data[i]);
i = (i + 1) % MAX_SIZE;
}
printf("\n");
}
int main() {
Queue queue;
initQueue(&queue);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
printQueue(&queue);
printf("Dequeued: %d\n", dequeue(&queue));
printf("Dequeued: %d\n", dequeue(&queue));
printf("Dequeued: %d\n", dequeue(&queue));
printQueue(&queue);
return 0;
}
在这个代码示例中,我们添加了一个printQueue
函数,用于打印队列中的元素。在main
函数中,我们演示了如何使用队列进行入队、出队和打印操作。