- 任務(wù)描述
-
相關(guān)知識(shí)
- 順序存儲(chǔ)的隊(duì)列
- 順序隊(duì)列的主要操作
- 編程要求
- 測(cè)試說(shuō)明
任務(wù)描述
本關(guān)任務(wù):實(shí)現(xiàn) step1/SeqQueue.cpp 中的SQ_IsEmpty
、SQ_IsFull
、SQ_Length
、SQ_In
和SQ_Out
五個(gè)操作函數(shù),以實(shí)現(xiàn)判斷隊(duì)列是否為空、是否為滿、求隊(duì)列長(zhǎng)度、隊(duì)列元素入隊(duì)和出隊(duì)等功能。
相關(guān)知識(shí)
隊(duì)列是一個(gè)插入操作和刪除操作受到限制的線性表數(shù)據(jù)結(jié)構(gòu)。隊(duì)列的插入和刪除被限制在表的兩端,即插入操作只能在表的一端進(jìn)行,而刪除操作只能在表的另一端進(jìn)行,因此隊(duì)列又稱(chēng)先進(jìn)先出表。
順序存儲(chǔ)的隊(duì)列
隊(duì)列既可以采用順序存儲(chǔ),也可以采用鏈接存儲(chǔ)來(lái)實(shí)現(xiàn)。下面給出了一種基于順序存儲(chǔ)的隊(duì)列實(shí)現(xiàn)方案:
該隊(duì)列存儲(chǔ)了 4 個(gè)元素 {56,77,15,12} ,其中 56 為隊(duì)列頭, 12 為隊(duì)列尾。
這種實(shí)現(xiàn)方案將隊(duì)列元素存儲(chǔ)在一片連續(xù)的空間中,并通過(guò)data
、front
、rear
和max
四個(gè)屬性元素組織成為一個(gè)結(jié)構(gòu):
-
data
: 給出隊(duì)列存儲(chǔ)空間的起始地址; -
front
: 為隊(duì)頭指針,它指向隊(duì)頭元素; -
rear
: 為隊(duì)尾指針,它指向下一個(gè)入隊(duì)元素的存儲(chǔ)位置; -
max
: 指明隊(duì)列存儲(chǔ)空間中最多可存儲(chǔ)的數(shù)據(jù)元素個(gè)數(shù)。(通常為了區(qū)分隊(duì)列空和滿,會(huì)在隊(duì)列尾留一個(gè)空數(shù)據(jù)單元,此時(shí)隊(duì)列最多可放max-1
個(gè)數(shù)據(jù)元素)
特別說(shuō)明:空間的開(kāi)始地址為
data
,連續(xù)空間里的位置編號(hào)從data
所指的開(kāi)始位置起,到該空間的結(jié)束位置,編號(hào)依次是0,1,2,…,max-1
。在圖1的示例中max=6
。下一個(gè)出隊(duì)元素(這里是隊(duì)列的頭結(jié)點(diǎn))所存儲(chǔ)的位置編號(hào)用front
給出,下一個(gè)入隊(duì)元素應(yīng)存儲(chǔ)的位置編號(hào)用rear
給出。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-737755.html
基于這些屬性要素組織成的隊(duì)列結(jié)構(gòu)如下所示:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-737755.html
struct SeqQueue {
T* data; // 指向數(shù)據(jù)元素?cái)?shù)組的指針
int front; // 下一個(gè)出隊(duì)元素的數(shù)組下標(biāo)
int rear; // 下一個(gè)入隊(duì)元素應(yīng)該存放的單元的數(shù)組下標(biāo)
int max; // 隊(duì)列中最多可放max-
到了這里,關(guān)于頭歌(C語(yǔ)言)-數(shù)據(jù)結(jié)構(gòu)與算法-隊(duì)列-第1關(guān):實(shí)現(xiàn)一個(gè)順序存儲(chǔ)的隊(duì)列的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!