c语言编写主函数完成建立队列,进队,出队,求队列长度的函数的调用测试
时间: 2024-11-12 11:32:07 浏览: 26
在 C 语言中,要编写一个包含主函数并利用结构体实现队列的基本操作(入队、出队和获取队列长度),你可以创建一个结构体 `Queue` 来存储元素,同时提供三个操作相关的函数:初始化队列、入队、出队以及获取队列长度。以下是简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义队列结构
typedef struct Queue {
int* data; // 队列元素数组
int front; // 队首索引
int rear; // 队尾索引
int capacity; // 队列容量
} Queue;
// 初始化队列
void init_queue(Queue* q, int size) {
q->data = (int*)malloc(size * sizeof(int));
q->front = -1;
q->rear = -1;
q->capacity = size;
}
// 入队(添加元素)
void enqueue(Queue* q, int item) {
if (q->rear == q->capacity - 1) { // 如果已满,扩大容量
q->capacity *= 2;
q->data = (int*)realloc(q->data, q->capacity * sizeof(int));
}
q->rear = (q->rear + 1) % q->capacity; // 使用循环数组处理边界
q->data[q->rear] = item;
}
// 出队(删除元素)
int dequeue(Queue* q) {
if (q->front == q->rear) { // 空队列
return -1; // 返回错误代码
}
int item = q->data[q->front];
q->front = (q->front + 1) % q->capacity;
return item;
}
// 获取队列长度
int queue_length(Queue* q) {
return q->rear >= q->front ? q->rear - q->front : q->capacity - q->front;
}
int main() {
Queue myQueue;
init_queue(&myQueue, 5); // 初始化队列,容量为5
// 测试操作
printf("enqueue(1): ");
enqueue(&myQueue, 1);
printf("queue length: %d\n", queue_length(&myQueue));
printf("enqueue(2): ");
enqueue(&myQueue, 2);
printf("queue length: %d\n", queue_length(&myQueue));
printf("dequeue: %d\n", dequeue(&myQueue)); // 输出2
printf("queue length: %d\n", queue_length(&myQueue)); // 输出1
// ...继续测试更多元素和操作...
// 释放内存
free(myQueue.data);
return 0;
}
```
阅读全文