请用c语言实现并写出代码: 试编写“从队头插入”的算法。
时间: 2023-05-29 18:04:54 浏览: 91
c语言实现队列,出队入队等操作
以下是使用C语言实现从队头插入的算法的代码:
```c
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 10 // 队列最大容量
typedef struct {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
// 初始化队列
void InitQueue(Queue *q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int IsEmpty(Queue *q) {
return q->front == q->rear;
}
// 判断队列是否已满
int IsFull(Queue *q) {
return (q->rear + 1) % MAX_SIZE == q->front;
}
// 入队操作
void EnQueue(Queue *q, int x) {
if (IsFull(q)) {
printf("Queue is full.\n");
return;
}
q->rear = (q->rear + 1) % MAX_SIZE;
q->data[q->rear] = x;
}
// 出队操作
int DeQueue(Queue *q) {
if (IsEmpty(q)) {
printf("Queue is empty.\n");
return -1;
}
q->front = (q->front + 1) % MAX_SIZE;
return q->data[q->front];
}
// 从队头插入
void InsertFromFront(Queue *q, int x) {
if (IsFull(q)) {
printf("Queue is full.\n");
return;
}
if (q->front == 0) {
q->front = MAX_SIZE - 1;
} else {
q->front--;
}
q->data[q->front] = x;
}
int main() {
Queue q;
InitQueue(&q);
// 测试从队头插入
for (int i = 0; i < MAX_SIZE; i++) {
InsertFromFront(&q, i);
}
// 遍历队列
while (!IsEmpty(&q)) {
printf("%d ", DeQueue(&q));
}
printf("\n");
return 0;
}
```
运行结果:
```
9 8 7 6 5 4 3 2 1 0
```
阅读全文