创建一个空循环用C语言实现,队列,实现入队、出队、返回队列长度、返回队列队头元素、遍历队列等基本算法。
时间: 2024-01-12 14:05:42 浏览: 83
```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 *q) {
q->front = q->rear = 0;
}
int isEmpty(Queue q) {
return q.front == q.rear;
}
int isFull(Queue q) {
return (q.rear + 1) % MAX_SIZE == q.front;
}
int enqueue(Queue *q, int item) {
if (isFull(*q)) {
return 0;
}
q->data[q->rear] = item;
q->rear = (q->rear + 1) % MAX_SIZE;
return 1;
}
int dequeue(Queue *q) {
if (isEmpty(*q)) {
return -1; // 队列为空
}
int item = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
return item;
}
int getFront(Queue q) {
if (isEmpty(q)) {
return -1; // 队列为空
}
return q.data[q.front];
}
int size(Queue q) {
return (q.rear - q.front + MAX_SIZE) % MAX_SIZE;
}
void traverse(Queue q) {
int i = q.front;
while (i != q.rear) {
printf("%d ", q.data[i]);
i = (i + 1) % MAX_SIZE;
}
printf("\n");
}
int main() {
Queue q;
initQueue(&q);
enqueue(&q, 1);
enqueue(&q, 2);
enqueue(&q, 3);
printf("队列长度为%d\n", size(q));
printf("队列队头元素为%d\n", getFront(q));
printf("遍历队列:");
traverse(q);
dequeue(&q);
printf("遍历队列:");
traverse(q);
return 0;
}
```
阅读全文