C语言实现循环队列的存储结构及基本运算的代码并用程序验证
时间: 2023-09-03 07:09:32 浏览: 50
以下是C语言实现循环队列的存储结构及基本运算的代码:
```
// 定义循环队列结构体
typedef struct {
int *data; // 队列数据数组
int front; // 队首指针
int rear; // 队尾指针
int capacity; // 队列容量
} CircularQueue;
// 初始化循环队列
void initQueue(CircularQueue *queue, int capacity) {
queue->data = (int *)malloc(sizeof(int) * capacity);
queue->front = queue->rear = 0;
queue->capacity = capacity;
}
// 判断队列是否为空
bool isEmpty(CircularQueue *queue) {
return queue->front == queue->rear;
}
// 判断队列是否已满
bool isFull(CircularQueue *queue) {
return (queue->rear+1) % queue->capacity == queue->front;
}
// 入队操作
bool enqueue(CircularQueue *queue, int value) {
if (isFull(queue)) {
return false;
}
queue->data[queue->rear] = value;
queue->rear = (queue->rear+1) % queue->capacity;
return true;
}
// 出队操作
bool dequeue(CircularQueue *queue, int *value) {
if (isEmpty(queue)) {
return false;
}
*value = queue->data[queue->front];
queue->front = (queue->front+1) % queue->capacity;
return true;
}
// 测试程序
int main() {
CircularQueue queue;
initQueue(&queue, 5);
int value;
// 测试入队
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
enqueue(&queue, 4);
enqueue(&queue, 5);
// 测试出队
dequeue(&queue, &value);
printf("dequeue value: %d\n", value);
dequeue(&queue, &value);
printf("dequeue value: %d\n", value);
// 再次入队
enqueue(&queue, 6);
enqueue(&queue, 7);
// 测试出队
while (!isEmpty(&queue)) {
dequeue(&queue, &value);
printf("dequeue value: %d\n", value);
}
return 0;
}
```
以上代码实现了循环队列的存储结构及基本运算,并且通过测试程序验证了入队和出队的正确性。