使用c语言编写一个程序,实现循环结构的出队与入队
时间: 2024-05-09 19:16:27 浏览: 95
以下是使用C语言实现循环队列的入队和出队操作的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_QUEUE_SIZE 5
typedef struct {
int front;
int rear;
int data[MAX_QUEUE_SIZE];
} CircularQueue;
void initQueue(CircularQueue *queue) {
queue->front = 0;
queue->rear = 0;
}
int isQueueEmpty(CircularQueue *queue) {
return queue->front == queue->rear;
}
int isQueueFull(CircularQueue *queue) {
return (queue->rear + 1) % MAX_QUEUE_SIZE == queue->front;
}
void enqueue(CircularQueue *queue, int element) {
if (isQueueFull(queue)) {
printf("Queue is full.\n");
return;
}
queue->rear = (queue->rear + 1) % MAX_QUEUE_SIZE;
queue->data[queue->rear] = element;
printf("%d enqueued to queue.\n", element);
}
int dequeue(CircularQueue *queue) {
if (isQueueEmpty(queue)) {
printf("Queue is empty.\n");
return -1;
}
queue->front = (queue->front + 1) % MAX_QUEUE_SIZE;
int element = queue->data[queue->front];
printf("%d dequeued from queue.\n", element);
return element;
}
int main() {
CircularQueue queue;
initQueue(&queue);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
enqueue(&queue, 4);
enqueue(&queue, 5); // 队列已满,此时不会入队
dequeue(&queue);
dequeue(&queue);
dequeue(&queue);
dequeue(&queue);
dequeue(&queue); // 队列已空,此时不会出队
return 0;
}
```
在上面的代码中,我们首先定义了一个结构体`CircularQueue`,包含队列的`front`(队头)和`rear`(队尾)指针,以及队列的`data`数组。`MAX_QUEUE_SIZE`定义了队列的最大容量。
`initQueue()`函数用于初始化队列,将队头和队尾指针都置为0。
`isQueueEmpty()`和`isQueueFull()`函数用于判断队列是否为空和是否已满。
`enqueue()`函数用于将元素入队。如果队列已满,则打印提示信息并返回。否则,先将队尾指针后移一位,再将元素存入队列中,并打印提示信息。
`dequeue()`函数用于将元素出队。如果队列为空,则打印提示信息并返回-1。否则,先将队头指针后移一位,再将队头元素取出并打印提示信息。
在`main()`函数中,我们首先调用`initQueue()`函数初始化队列。然后连续调用`enqueue()`函数将5个元素入队。最后连续调用`dequeue()`函数将5个元素依次出队。注意,在队列已满或已空时,入队和出队操作都不会成功。
阅读全文