如果允许在循环队列的两端都可以进行插入和删除操作。要求: ① 写出循环队列的类型定义; ② 写出“从队尾删除”和“从队头插入”的算法。
时间: 2024-05-15 07:14:36 浏览: 10
答:好的,我能够回答你的问题。
① 循环队列的类型定义如下:
```
typedef struct{
ElementType *array; // 存储元素的数组
int front; // 队头指针
int rear; // 队尾指针
int maxLength; // 循环队列的最大长度
}CircularQueue;
```
② 从队尾删除的算法如下:
```
Status DeleteFromRear(CircularQueue *q, ElementType *e){
if(q->front==q->rear){ // 判断队列是否为空
return ERROR; // 队列为空,删除失败
}else{
*e=q->array[q->rear]; // 将队尾元素赋值给变量e
q->rear=(q->rear+q->maxLength-1)%q->maxLength; // 修改队尾指针
return OK; // 删除成功
}
}
```
从队头插入的算法如下:
```
Status InsertIntoFront(CircularQueue *q, ElementType e){
if(((q->rear+1)%q->maxLength)==q->front){ // 判断队列是否已满
return ERROR; // 队列已满,插入失败
}else{
q->front=(q->front+q->maxLength-1)%q->maxLength; // 修改队头指针
q->array[q->front]=e; // 将元素插入队头
return OK; // 插入成功
}
}
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)