队列的基本操作以及代码(包括主函数并且用c语言实现)
时间: 2024-05-14 21:11:51 浏览: 61
好的,我可以为您介绍队列的基本操作及代码。
队列是一种先进先出(FIFO)的数据结构,它具有插入元素和删除元素的两种操作。队列的基本操作包括 enqueue(入队)和 dequeue(出队)。下面是用C语言实现队列的代码,包括主函数:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10 // 队列最大容量
// 定义队列结构体
typedef struct {
int* arr; // 队列数组
int front; // 队首指针
int rear; // 队尾指针
} Queue;
// 初始化队列
Queue* initQueue() {
// 申请动态内存
Queue* q = (Queue*)malloc(sizeof(Queue));
q->arr = (int*)malloc(MAX_SIZE * sizeof(int));
// 初始化指针
q->front = -1;
q->rear = -1;
return q;
}
// 判断队列是否为空
int isEmpty(Queue* q) {
return (q->front == -1 && q->rear == -1);
}
// 判断队列是否已满
int isFull(Queue* q) {
return (q->rear == MAX_SIZE - 1);
}
// 入队
int enqueue(Queue* q, int val) {
// 队列已满,无法插入元素
if (isFull(q)) {
printf("Queue is full.\n");
return -1;
}
// 第一个元素入队
if (isEmpty(q)) {
q->front = q->rear = 0;
q->arr[q->rear] = val;
}
else {
q->rear++;
q->arr[q->rear] = val;
}
return val;
}
// 出队
int dequeue(Queue* q) {
// 队列为空,无法删除元素
if (isEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
int val = q->arr[q->front];
// 队列只有一个元素
if (q->front == q->rear) {
q->front = q->rear = -1;
}
else {
q->front++;
}
return val;
}
int main() {
Queue* q = initQueue();
// 测试入队
enqueue(q, 1);
enqueue(q, 2);
enqueue(q, 3);
// 测试出队
printf("%d\n", dequeue(q));
printf("%d\n", dequeue(q));
// 测试入队
enqueue(q, 4);
enqueue(q, 5);
// 输出队列
printf("Queue: ");
for (int i = q->front; i <= q->rear; i++) {
printf("%d ", q->arr[i]);
}
printf("\n");
return 0;
}
```
以上就是用C语言实现队列的基本操作及代码,您可以根据需要进行修改和扩展。