福州網(wǎng)站設(shè)計(jì)十年樂云seo網(wǎng)站seo站長工具
目錄
- 1.解題思路
- 2.代碼實(shí)現(xiàn)
1.解題思路
首先,該題是設(shè)計(jì)循環(huán)隊(duì)列,因此我們有兩種實(shí)現(xiàn)方法,即數(shù)組和鏈表,但具體考慮后,發(fā)現(xiàn)數(shù)組實(shí)現(xiàn)要更容易一些,因此使用數(shù)組實(shí)現(xiàn),因此我們要給出頭和尾變量,個(gè)數(shù)變量以及一個(gè)數(shù)組,利用取模運(yùn)算來達(dá)到想要的效果,要特別注意的是,為了方便個(gè)數(shù)的統(tǒng)計(jì)以及在判斷隊(duì)列是否為滿方便一些,因此在開辟空間的時(shí)候直接多開辟一塊,即有效空間為K,而實(shí)際開辟空間為K+1.
2.代碼實(shí)現(xiàn)
typedef struct {int *a;int front;int back;int k;
} MyCircularQueue;bool myCircularQueueIsFull(MyCircularQueue* obj) {return obj->front==(obj->back+1)%(obj->k+1);}
bool myCircularQueueIsEmpty(MyCircularQueue* obj) {return obj->front==obj->back;}MyCircularQueue* myCircularQueueCreate(int k) {MyCircularQueue*obj=(MyCircularQueue*)malloc(sizeof(MyCircularQueue));obj->a=(int *)malloc(sizeof(int)*(k+1));obj->front=0;obj-> back=0;obj->k=k;return obj;
}bool myCircularQueueEnQueue(MyCircularQueue* obj, int value) {if(myCircularQueueIsFull(obj))return false;obj->a[obj->back]=value;obj->back++;obj->back%=(obj->k+1);return true;
}bool myCircularQueueDeQueue(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj))return false;obj->front++;obj->front%=(obj->k+1);return true;}int myCircularQueueFront(MyCircularQueue* obj) {if(myCircularQueueIsEmpty(obj))return -1;return obj->a[obj->front];}int myCircularQueueRear(MyCircularQueue* obj) {if( myCircularQueueIsEmpty( obj))return -1;return obj->a[(obj->back-1+obj->k+1)%(obj->k+1)];}void myCircularQueueFree(MyCircularQueue* obj) {free(obj->a);free(obj);
}
結(jié)尾:今天的分享到此結(jié)束,喜歡的朋友如果感覺有幫助可以點(diǎn)贊三連支持,咱們共同進(jìn)步!