本文是個(gè)人學(xué)習(xí)筆記,素材來自青島大學(xué)王卓老師的教學(xué)視頻。
一方面用于學(xué)習(xí)記錄與分享,
另一方面是想讓更多的人看到這么好的《數(shù)據(jù)結(jié)構(gòu)與算法》的學(xué)習(xí)視頻。
如有侵權(quán),請留言作刪文處理。
課程視頻鏈接:
數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ)–第05周14–3.5隊(duì)列的表示和實(shí)現(xiàn)3–3.5.2隊(duì)列的順序表示和實(shí)現(xiàn)2文章來源:http://www.zghlxwxcb.cn/news/detail-596656.html
?? 【W(wǎng)eek05】14_隊(duì)列的順序表示和實(shí)現(xiàn)2
循環(huán)隊(duì)列的類型定義
// 最大隊(duì)列長度
#define MAXQSIZE 100
Typedef struct{
// 初始化的動態(tài)分配存儲空間
QElemType* base;
// 頭指針,若隊(duì)列不空,則指向隊(duì)列頭元素
int front;
// 尾指針,若隊(duì)列不空,則指向隊(duì)尾元素的下一個(gè)位置
int rear;
}SqQueue;
循環(huán)隊(duì)列的操作
循環(huán)隊(duì)列的初始化
Status InitQueue(SqQueue& Q){
// 分配數(shù)組空間
Q.base = new QElemType[MAXSIZE];
// Q.base = (QElemType*)
// malloc(MAXQSIZE* sizeof(QElemType));
if(!Q.base)
// 存儲分配失敗
exit(OVERFLOW);
// 頭指針尾指針置為 0,隊(duì)列為空
Q.front = Q.rear = 0;
return OK;
}
求循環(huán)隊(duì)列的長度
文章來源地址http://www.zghlxwxcb.cn/news/detail-596656.html
int QueueLength(SqQueue Q){
reurn ((Q.rear - Q.front + MAXSIZE)%MAXQSIZE);
}
循環(huán)隊(duì)列的入隊(duì)
Status EnQueue(SqQueue& Q, QElemType e){
if((Q.rear + 1)%MAXQSIZE == Q.front)
// 棧滿
return ERROR;
// 新元素加入隊(duì)尾
Q.base[Q.rear] = e;
// 隊(duì)尾指針 + 1
Q.rear = (Q.rear + 1)% MAXQSIZE;
return OK;
}
循環(huán)隊(duì)列的出隊(duì)
Status DeQueue(SqQueue& Q, QElemType& e){
if(Q.front == Q.rear)
// 棧空
return ERROR;
// 保存隊(duì)頭元素
e = Q.base[Q.front];
// 隊(duì)頭指針 + 1
Q.front = (Q.front + 1)% MAXQSIZE;
return OK;
}
取循環(huán)隊(duì)列隊(duì)頭元素
Status GetHead(SqQueue Q){
// 隊(duì)列不為空
if(Q.front != Q.rear)
// 返回隊(duì)頭指針元素的值,隊(duì)頭指針不變
return Q.base[Q.front];
}
到了這里,關(guān)于青島大學(xué)_王卓老師【數(shù)據(jù)結(jié)構(gòu)與算法】Week05_14_隊(duì)列的順序表示和實(shí)現(xiàn)2_學(xué)習(xí)筆記的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!