欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 题海拾贝:力扣 622.设计循环队列

题海拾贝:力扣 622.设计循环队列

2026/4/28 17:55:35 来源:https://blog.csdn.net/2401_87995839/article/details/145244331  浏览:    关键词:题海拾贝:力扣 622.设计循环队列

         Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路!

我的博客:<但凡.

我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》

欢迎点赞,关注!

1、题目

 

2、题解 

typedef struct {int* arr;int front;//队头下标int rear;//队尾后一个元素下标//rear始终指向空白格子或可被覆盖int capacity;//最大容量//最大有效元素个数
} MyCircularQueue;//初始化
MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue* pq=(MyCircularQueue*)malloc(sizeof(MyCircularQueue));pq->arr=(int*)malloc((k+1)*sizeof(int));//实际空间比capacity要多一个pq->capacity=k;pq->front=pq->rear=0;return pq;
}
bool myCircularQueueIsEmpty(MyCircularQueue* obj) {if(obj->front==obj->rear){return true;}return false;
}
bool myCircularQueueIsFull(MyCircularQueue* obj) {if((obj->rear+1)%(obj->capacity+1)==obj->front){return true;}return false;
}
bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {//考虑无法成功插入的情况,如果队列已满,则无法插入//用isFUll来检测是否满if( myCircularQueueIsFull(obj)){return false;}obj->arr[obj->rear++]=value;obj->rear %= obj->capacity+1;//防止rear指向数组外return true;
}bool myCircularQueueDeQueue(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj)){return false;}//队列保证先进先出//所以队头先出obj->front++;//front有可能会超出范围obj->front %= obj->capacity+1;return true;
}int myCircularQueueFront(MyCircularQueue* obj) 
{if(myCircularQueueIsEmpty(obj)){return -1;}return obj->arr[obj->front];
}int myCircularQueueRear(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj)){return -1;}if(obj->rear==0){return obj->arr[obj->capacity];}else{return obj->arr[obj->rear-1];}
}void myCircularQueueFree(MyCircularQueue* obj) {free(obj->arr);obj->arr=NULL;free(obj);obj=NULL;
}/*** Your MyCircularQueue struct will be instantiated and called as such:* MyCircularQueue* obj = myCircularQueueCreate(k);* bool param_1 = myCircularQueueEnQueue(obj, value);* bool param_2 = myCircularQueueDeQueue(obj);* int param_3 = myCircularQueueFront(obj);* int param_4 = myCircularQueueRear(obj);* bool param_5 = myCircularQueueIsEmpty(obj);* bool param_6 = myCircularQueueIsFull(obj);* myCircularQueueFree(obj);
*/

        好了,今天的内容就分享到这,我们下期再见! 

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词