c请编写程序实现顺序队的建立、入队、出队、输出队列元素的基本操作
时间: 2024-10-18 21:19:32 浏览: 66
以下是使用 C 语言实现顺序队列的简单代码,包括队列的创建、入队、出队和打印队列元素的基本操作:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 10 // 定义队列的最大容量
typedef struct Queue {
int queue[MAX_SIZE]; // 存储队列元素的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
// 初始化队列
Queue* createQueue() {
Queue* q = (Queue*)malloc(sizeof(Queue));
q->front = -1;
q->rear = -1;
return q;
}
// 判断队列是否为空
int isQueueEmpty(Queue* q) {
return q->front == -1 && q->rear == -1;
}
// 判断队列是否已满
int isQueueFull(Queue* q) {
return (q->front == 0 && q->rear == MAX_SIZE - 1);
}
// 入队操作
void enqueue(Queue* q, int item) {
if (isQueueFull(q)) {
printf("队列已满,无法入队。\n");
return;
}
q->rear = (q->rear + 1) % MAX_SIZE; // 使用环形队列技巧
q->queue[q->rear] = item;
if (q->front == -1)
q->front = 0;
printf("元素 %d 入队成功。\n", item);
}
// 出队操作
int dequeue(Queue* q) {
if (isQueueEmpty(q)) {
printf("队列为空,无法出队。\n");
return -1;
}
int item = q->queue[q->front];
q->front = (q->front + 1) % MAX_SIZE;
if (q->front == q->rear)
q->rear = -1;
printf("出队元素: %d\n", item);
return item;
}
// 打印队列元素
void printQueue(Queue* q) {
if (isQueueEmpty(q))
printf("队列为空。\n");
else {
printf("队列内容: ");
for(int i = q->front; i != q->rear; i = (i + 1) % MAX_SIZE) {
printf("%d ", q->queue[i]);
}
printf("\n");
}
}
int main() {
Queue* q = createQueue();
enqueue(q, 1);
enqueue(q, 2);
enqueue(q, 3);
printQueue(q); // 应该打印 1 2 3
dequeue(q);
printQueue(q); // 应该打印 2 3
return 0;
}
阅读全文