最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

雙向鏈表(C語言)詳解

2023-07-11 18:29 作者:解學武  | 我要投稿

目前我們所學到的鏈表,無論是動態(tài)鏈表還是靜態(tài)鏈表,表中各個節(jié)點都只包含一個指針(游標),且都統(tǒng)一指向直接后繼節(jié)點,這類鏈表又統(tǒng)稱為單向鏈表或單鏈表。

雖然單鏈表能 100% 存儲邏輯關(guān)系為 "一對一" 的數(shù)據(jù),但在解決某些實際問題時,單鏈表的執(zhí)行效率并不高。例如,若實際問題中需要頻繁地查找某個結(jié)點的前驅(qū)結(jié)點,使用單鏈表存儲數(shù)據(jù)顯然沒有優(yōu)勢,因為單鏈表的強項是從前往后查找目標元素,不擅長從后往前查找元素。

解決此類問題,可以建立雙向鏈表(簡稱雙鏈表)。

雙向鏈表是什么

從名字上理解雙向鏈表,即鏈表是 "雙向" 的,如圖?1 所示:

雙向鏈表結(jié)構(gòu)示意圖
圖 1 雙向鏈表結(jié)構(gòu)示意圖

“雙向”指的是各節(jié)點之間的邏輯關(guān)系是雙向的,頭指針通常只設(shè)置一個。

從圖 1 中可以看到,雙向鏈表中各節(jié)點包含以下 3 部分信息(如圖 2 所示):

  1. 指針域:用于指向當前節(jié)點的直接前驅(qū)節(jié)點;

  2. 數(shù)據(jù)域:用于存儲數(shù)據(jù)元素。

  3. 指針域:用于指向當前節(jié)點的直接后繼節(jié)點;

雙向鏈表的節(jié)點構(gòu)成
圖 2 雙向鏈表的節(jié)點構(gòu)成

因此,雙鏈表的節(jié)點結(jié)構(gòu)用 C 語言實現(xiàn)為:

雙向鏈表的創(chuàng)建

同單鏈表相比,雙鏈表僅是各節(jié)點多了一個用于指向直接前驅(qū)的指針域。因此,我們可以在單鏈表的基礎(chǔ)輕松實現(xiàn)對雙鏈表的創(chuàng)建。

需要注意的是,與單鏈表不同,雙鏈表創(chuàng)建過程中,每創(chuàng)建一個新節(jié)點都要與其前驅(qū)節(jié)點建立兩次聯(lián)系,分別是:

  • 將新節(jié)點的 prior 指針指向直接前驅(qū)節(jié)點;

  • 將直接前驅(qū)節(jié)點的 next 指針指向新節(jié)點;

這里給出創(chuàng)建雙向鏈表的 C 語言實現(xiàn)代碼:


我們可以嘗試著在 main 函數(shù)中輸出創(chuàng)建的雙鏈表,C 語言代碼如下:

程序運行結(jié)果:

1 <-> 2 <-> 3 <-> 4 <-> 5
鏈表中第 4 個節(jié)點的直接前驅(qū)是:3

雙向鏈表(C語言)詳解的評論 (共 條)

分享到微博請遵守國家法律
山东省| 台前县| 抚松县| 南昌县| 万宁市| 中宁县| 凤翔县| 河间市| 铅山县| 苏州市| 通州区| 怀安县| 万安县| 鸡泽县| 黎川县| 娄烦县| 邮箱| 绥江县| 汽车| 清水河县| 瓮安县| 宜丰县| 金湖县| 大姚县| 西藏| 新津县| 淮北市| 崇礼县| 佛学| 句容市| 连南| 奇台县| 怀安县| 出国| 双桥区| 江城| 大城县| 玉环县| 靖江市| 塘沽区| 温泉县|