在具有10个元素的队列的指定位置上插入数据(队列的最大值为20),用C语言实现
时间: 2024-02-22 22:00:34 浏览: 54
要在具有10个元素的队列的指定位置上插入数据,可以使用循环队列的方式来实现,并且队列的最大值为20,所以需要使用一个数组来存储队列元素。下面是用C语言实现在指定位置上插入数据的代码:
```c
#include <stdio.h>
#define MAXSIZE 20 // 定义队列的最大容量
int queue[MAXSIZE]; // 队列数组
int front = -1; // 队头指针
int rear = -1; // 队尾指针
void enqueue(int data, int pos) // 将数据插入到指定位置
{
if ((rear + 1) % MAXSIZE == front) // 判断队列是否已满
{
printf("Queue is full!\n");
return;
}
else if (pos < 1 || pos > rear + 2) // 判断插入位置是否合法
{
printf("Invalid position!\n");
return;
}
else
{
if (front == -1) // 如果队列为空,则初始化队头指针
{
front = 0;
rear = 0;
}
else if (rear == MAXSIZE - 1) // 如果队尾指针已经到达数组末尾,则需要将其置为0
{
rear = 0;
}
else
{
rear++; // 队尾指针加1
}
for (int i = rear; i > pos - 1; i--) // 将指定位置后的元素后移
{
queue[i] = queue[i - 1];
}
queue[pos - 1] = data; // 插入数据
printf("Enqueue %d at position %d\n", data, pos);
}
}
int main()
{
enqueue(11, 3); // 在队列的第3个位置上插入数据11
return 0;
}
```
在上述代码中,使用数组`queue`来实现队列,使用变量`front`和`rear`来表示队头和队尾指针。函数`enqueue`用于将数据插入到指定位置,若队列已满或插入位置不合法则输出提示信息。在`enqueue`函数中,首先判断队列是否为空,然后判断队列是否已满,然后判断插入位置是否合法,最后将指定位置后的元素后移,然后将数据插入到指定位置。在`main`函数中调用`enqueue`函数并传入数据11和插入位置3,即可在队列的第3个位置上插入数据11。
阅读全文