c语言数据结构实现进队列
时间: 2024-10-11 15:00:19 浏览: 35
在C语言中,队列是一种线性表,遵循先进先出(FIFO,First In First Out)的原则。你可以通过数组或链表来实现队列的数据结构。以下是基于数组实现的一个简单队列:
```c
#include <stdio.h>
#define MAX_SIZE 10
typedef struct {
int data[MAX_SIZE]; // 存储元素的数组
int front; // 队头指针,指向当前队首元素的下一个位置
int rear; // 队尾指针,指向当前队尾的位置
} Queue;
// 初始化队列
void initialize(Queue* queue) {
queue->front = -1;
queue->rear = -1;
}
// 判断队列是否为空
int is_empty(const Queue* queue) {
return queue->front == -1 && queue->rear == -1;
}
// 判断队列是否已满
int is_full(const Queue* queue) {
return (queue->front + 1) % MAX_SIZE == queue->rear;
}
// 入队操作
void enqueue(Queue* queue, int item) {
if (is_full(queue)) {
printf("Queue is full.\n");
return;
}
queue->rear = (queue->rear + 1) % MAX_SIZE;
queue->data[queue->rear] = item;
if (queue->front == -1)
queue->front = 0;
}
// 出队操作
int dequeue(Queue* queue) {
if (is_empty(queue)) {
printf("Queue is empty.\n");
return -1; // 或者返回特殊值表示异常
}
int removed_item = queue->data[queue->front];
queue->front = (queue->front + 1) % MAX_SIZE;
if (queue->front == queue->rear)
queue->rear = -1; // 队列变空时更新 rear
return removed_item;
}
// 打印队列
void display(const Queue* queue) {
if (is_empty(queue))
printf("Queue is empty.\n");
else {
int i;
for (i = queue->front; i != queue->rear; i = (i + 1) % MAX_SIZE)
printf("%d ", queue->data[i]);
printf("\n");
}
}
int main() {
Queue my_queue;
initialize(&my_queue);
enqueue(&my_queue, 1);
enqueue(&my_queue, 2);
enqueue(&my_queue, 3);
display(&my_queue); // 输出: 1 2 3
dequeue(&my_queue);
display(&my_queue); // 输出: 2 3
return 0;
}
```
这个简单的实现仅适用于固定大小的队列。如果你需要动态调整队列容量,可以考虑使用链表代替数组。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![](https://img-home.csdnimg.cn/images/20250102104920.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![txt](https://img-home.csdnimg.cn/images/20241231045021.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)