国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 用鏈表實現隊列,在元素入列和出列時為什么需要判斷鏈表是否為空?

用鏈表實現隊列,在元素入列和出列時為什么需要判斷鏈表是否為空?

來源:千鋒教育
發布人:xqq
時間: 2023-10-11 06:29:17 1696976957

一、用鏈表實現隊列,在元素入列和出列時為什么需要判斷鏈表是否為空

結合《算法》這本書之前代碼可知已初始化表尾,元素入列如果為空,則用表尾結點初始化表頭結點;出列時,操作的是表頭結點,當表中元素為空時,first節點中內容正確,last節點仍存有之前內容,需將其置為空。

鏈式隊列

鏈式隊列 : 用鏈表形式實現的隊列。鏈表結點為隊列數據存儲區,鏈表結點包括兩部分數據存儲區和指針存儲區。

數據存儲區 :存放真實有效數據的區域。

指針存儲區 :存放下一個鏈表結點的地址。

注意:

1. 鏈式隊列不存在隊列已滿的情況。在內存足夠大的情況下,每次動態申請鏈表結點內存都會成功,即不會出現隊列已滿的情況,除非數據量超大內存不夠。

2. 鏈式隊列只存在隊列為空的情況,在剛創建隊列成功時隊列為空,或者隊列數據已全部出隊,則此時隊列為空。

3.在鏈式隊列中頭結點的數據域不存放有效數據,指針域存放名列前茅個有效數據域的結點地址,頭結點的作用是方便對鏈式隊列的操作。

延伸閱讀:

二、鏈式隊列數據出隊

1.只有在鏈式隊列非空時出隊數據才有效。

2.若只有一個有效結點時,需將隊尾指針指向頭結點,頭結點指針域為空。

3.頭結點指針指向下下個有效結點。

4.結點數據出隊。

5.釋放出隊結點數據內存。

如下圖所示:

//鏈式隊列數據出隊

void OutLinkQueue(pLinkQueue queue, int * value)

{

??? pNode queNode = 0;//隊列結點指針

??? if (IsEmptyLinkQueue(queue))

??? {

?????? printf(“鏈式隊列為空,出隊失敗……\r\n”);

?????? *value = 0;

?????? return;

??? }

??? if (queue->qFront->pNext == queue->qRear)//只有一個有效結點

?????? queue->qRear = queue->qFront;//隊尾指針等于隊首指針

??? queNode = queue->qFront->pNext;//結點指針指向隊首有效結點

??? queue->qFront->pNext = queNode->pNext;//隊首結點指針指向下個結點

??? *value = queNode->dat;//出隊結點值

??? free(queNode);//釋放內存

??? printf(“出隊成功!出隊值:%d? —->? “, *value);

??? printf(“隊首結點指針:0x%08X??? 隊尾指針:0x%08X\r\n”, queue->qFront->pNext, queue->qRear);

}

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT