当前位置: 首页> 科技> IT业 > 力扣刷题-循环队列

力扣刷题-循环队列

时间:2025/7/17 12:20:18来源:https://blog.csdn.net/in_seattle/article/details/141153731 浏览次数:0次

🌈个人主页:羽晨同学 

💫个人格言:“成为自己未来的主人~”  

思路:

我们在这里采用的是用数组的形式实现循环链表,我认为这个用数组是更为简单的,我们只需要控制下标就可以实现循环链表的效果。具体实现代码如下: 

typedef struct {int*a;int front;int rear;int size;int capacity;
} MyCircularQueue;MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue*obj=(MyCircularQueue*)malloc(sizeof(MyCircularQueue));obj->a=(int*)malloc(sizeof(int)*(k+1));obj->front=0;obj->rear=0;obj->size=0;obj->capacity=k+1;return obj;
}bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) 
{if((obj->rear+1)%(obj->capacity)==obj->front){return false;}else{obj->a[obj->rear]=value;//4obj->rear=(obj->rear+1)%(obj->capacity);}obj->size++;return true;}bool myCircularQueueDeQueue(MyCircularQueue* obj) 
{if(obj->front==obj->rear){return false;}else{obj->front=(obj->front+1)%(obj->capacity);}obj->size--;return true;
}int myCircularQueueFront(MyCircularQueue* obj) 
{if(obj->size>=1){return obj->a[obj->front];}else{return -1;}
}int myCircularQueueRear(MyCircularQueue* obj) 
{if(obj->size>=1){return obj->a[(obj->rear-1+obj->capacity)%(obj->capacity)];}elsereturn -1;}bool myCircularQueueIsEmpty(MyCircularQueue* obj) 
{return obj->front==obj->rear;   
}bool myCircularQueueIsFull(MyCircularQueue* obj) 
{return (obj->rear+1)%(obj->capacity)==obj->front;
}void myCircularQueueFree(MyCircularQueue* obj) 
{free(obj->a);obj->a=NULL;obj->front=obj->rear=obj->size=obj->capacity=0;free(obj);    
}/*** 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

责任编辑: