环形数组c语言,结构体方式代码
时间: 2023-10-19 09:26:02 浏览: 47
下面是使用结构体方式实现环形数组的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10
typedef struct {
int arr[MAX_SIZE];
int front;
int rear;
} CircularQueue;
void enqueue(CircularQueue *queue, int val) {
if ((queue->rear + 1) % MAX_SIZE == queue->front) {
printf("Queue is full.\n");
return;
}
queue->arr[queue->rear] = val;
queue->rear = (queue->rear + 1) % MAX_SIZE;
}
void dequeue(CircularQueue *queue) {
if (queue->front == queue->rear) {
printf("Queue is empty.\n");
return;
}
int val = queue->arr[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
}
int size(CircularQueue *queue) {
return (queue->rear - queue->front + MAX_SIZE) % MAX_SIZE;
}
int main() {
CircularQueue queue = {{0}, 0, 0};
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
dequeue(&queue);
printf("Queue size: %d\n", size(&queue));
return 0;
}
```
在这个代码中,我们使用了一个结构体 `CircularQueue` 来表示一个环形队列,其中包含一个数组 `arr`、一个头指针 `front` 和一个尾指针 `rear`。在入队和出队操作中,我们直接访问结构体中的元素,而不是使用传统的指针方式。