日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

链表的定义

發(fā)布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 链表的定义 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

鏈表

鏈表的概念

定義鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),由一系列結(jié)點(鏈表中每一個元素稱為結(jié)點)組成,結(jié)點可以在運行時動態(tài)生成。

在鏈表的儲存上,每個結(jié)點不僅包含所存的元素信息,還包含元素間的邏輯信息

鏈表的特性

  • 不支持隨機(jī)訪問不能通過知道第一個元素的地址(即儲存空間的首地址)可以輕松訪問儲存的所有數(shù)據(jù)。
  • 節(jié)點的儲存空間利用率相對順序表較低:鏈表中的每分一個結(jié)點需要劃出一部分空間來儲存指向下一個結(jié)點位置指針
  • 支持儲存空間的動態(tài)分配:鏈表中當(dāng)前結(jié)點的位置是由其前驅(qū)結(jié)點中的地址信息所指示的。其結(jié)點可以散落在內(nèi)存中的任意位置,且不需要一次性地劃分所有結(jié)點所需的空間給它。
  • 在鏈表中進(jìn)行插入操作無需移動元素(而順序表需要)

鏈表的形式

單鏈表

在每個結(jié)點除了包含的數(shù)據(jù)域外,還包含一個指針域,用以指向其后繼結(jié)點。

  • 帶頭結(jié)點的單鏈表

帶頭結(jié)點的單鏈表中,頭指針head指向頭結(jié)點,頭結(jié)點的值域不含任何信息,從頭結(jié)點的后繼結(jié)點開始儲存信息。頭指針head 始終不等于NULLhead->next等于NULL的時候,鏈表為空。

  • 不帶頭結(jié)點的單鏈表

不帶頭結(jié)點的單鏈表中的頭指針head直接指向開始結(jié)點,當(dāng)head等于NULL時,鏈表為空。

雙鏈表

雙鏈表就是在單鏈表結(jié)點上增添了一個指針域,指向當(dāng)前節(jié)點的前驅(qū)

相比于單鏈表,雙鏈表能夠從終端結(jié)點反向走到開始結(jié)點

循環(huán)鏈表

  • 循環(huán)單鏈表

只需要將單鏈表最后一個指針域(空指針)指向鏈表中的第一個結(jié)點即可。(如果循環(huán)單鏈表帶頭結(jié)點,則指向頭結(jié)點;不帶頭結(jié)點,則指向開始結(jié)點)。

循環(huán)單鏈表可以實現(xiàn)從任何一個結(jié)點出發(fā),訪問鏈表中任何結(jié)點。(注意:此處應(yīng)該區(qū)分與順序表隨機(jī)訪問的特點。循環(huán)單鏈表指的是從一個結(jié)點出發(fā),而不是知道一個結(jié)點從而迅速找到任何一個結(jié)點,因此循環(huán)單鏈表不具有隨機(jī)訪問特性。)

帶頭結(jié)點的循環(huán)單鏈表,當(dāng)head等于head->next時,鏈表為空;不帶頭結(jié)點的循環(huán)單鏈表,當(dāng)head等于NULL時,鏈表為空。

  • 循環(huán)雙鏈表

雙鏈表終端節(jié)點的next指針指向鏈表中第一個結(jié)點,將鏈表中的第一個結(jié)點的prior指針指向終端結(jié)點。

不帶頭結(jié)點的循環(huán)雙鏈表,head等于NULL,鏈表為空

帶頭結(jié)點的循環(huán)雙鏈表是沒有空指針的,其為空狀態(tài)下,head->nexthead->prior必然都等于head,故一下四種語句都可判斷為空

head->next == head; head->prior == head; head->next == head && head->prior == head; head->next == head || head->prior == head;

靜態(tài)鏈表

靜態(tài)鏈表借助一維數(shù)組表示。

靜態(tài)鏈表結(jié)點空間來自于一個結(jié)構(gòu)體數(shù)組(一般鏈表結(jié)點空間來自整個內(nèi)存),數(shù)組中每個結(jié)點含兩個分量:

  • 數(shù)據(jù)元素分量data
  • 指針分量(指示了當(dāng)前結(jié)點直接后繼節(jié)點在數(shù)組中的位置)

注意:靜態(tài)鏈表的指針不是通常所說儲存內(nèi)存地址的指針型變量,而是儲存數(shù)組下標(biāo)的整型變量,其功能類似于指針,故在此稱為指針

順序表與鏈表區(qū)別

基于空間比較

  • 儲存的分配方式

順序表儲存空間時一次性分配的,鏈表的是多次分配的

  • 存儲密度

(注: 存儲密度 = 結(jié)點值域所占存儲量/結(jié)點結(jié)構(gòu)所占存儲總量

順序表存儲密度 = 1

鏈表存儲密度 < 1

基于時間的比較

  • 存取方式

順序表可以隨機(jī)存取,也可以順序存取

鏈表只能順序存取

  • 插入/刪除時移動元素個數(shù)

順序表平均需要移動一半元素

鏈表不需要移動元素,僅需修改指針

總結(jié)

以上是生活随笔為你收集整理的链表的定义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。