帮我实现一个队列,使用C语言,要求队列数据类型为uint8_t[],队列大小为10,要求队列有自己的独立空间存储数据
时间: 2024-05-01 09:18:16 浏览: 92
好的,以下是使用C语言实现的队列代码:
```
#include<stdio.h>
#include<stdint.h>
#include<stdlib.h>
#define QUEUE_SIZE 10
typedef struct {
uint8_t *data;
int front, rear; //队列头尾指针
} Queue;
Queue *createQueue() {
Queue *queue = (Queue *) malloc(sizeof(Queue));
queue->data = (uint8_t *) malloc(sizeof(uint8_t) * QUEUE_SIZE);
queue->front = 0;
queue->rear = 0;
return queue;
}
void enqueue(Queue *queue, uint8_t *value) {
if ((queue->rear + 1) % QUEUE_SIZE == queue->front) {
printf("The queue is full.\n");
return;
}
for (int i = 0; i < sizeof(value); i++) {
queue->data[queue->rear] = value[i];
queue->rear = (queue->rear + 1) % QUEUE_SIZE;
}
printf("Enqueued successfully.\n");
}
void dequeue(Queue *queue) {
if (queue->front == queue->rear) {
printf("The queue is empty.\n");
return;
}
queue->front = (queue->front + 1) % QUEUE_SIZE;
printf("Dequeued successfully.\n");
}
int main() {
Queue *queue = createQueue();
uint8_t data[3] = {1, 2, 3};
enqueue(queue, data);
dequeue(queue);
return 0;
}
```
这个代码实现了一个基本的队列,在它的内部使用了动态数组来存储队列的元素。每个元素的类型是uint8_t[],队列最多可以存放10个元素。enqueue函数实现了入队操作,dequeue函数实现了出队操作。入队操作将一个uint8_t[]类型的数据插入到队列中,出队操作将队列头部的元素删除。
阅读全文