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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

单链表入门(一)

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

小徒弟Karl非常想學(xué)鏈表,所以我打算寫一篇關(guān)于單鏈表的入門教程。既然是入門,那就要打好基礎(chǔ),從頭說起。所以先說“線性表”。

一、什么是線性表

線性表是具有相同特性的數(shù)據(jù)元素的一個(gè)有限序列
該序列中所含元素的個(gè)數(shù)叫做線性表的長度,如果n表示,那么n>=0。

當(dāng)n=0時(shí),表示線性表是一個(gè)空表,即表中不包含任何元素。

設(shè)序列中第i(i表示位序)個(gè)元素為ai(1≤i≤n)。
線性表的一般表示為:(a1,a2,…ai,ai+1,…,an)

其中a1為第一個(gè)元素,又稱做表頭元素,a2為第二個(gè)元素,an為最后一個(gè)元素,又稱做表尾元素。
例如,在線性表(1,4,3,2,8,10)中,1為表頭元素,10為表尾元素。

線性表的特點(diǎn):
1、 有序
線性表里面的元素是一個(gè)挨著一個(gè)順序排下去的,就像大家排隊(duì)買票;
2、允許沒有元素,也就是空表;
3、第一個(gè)元素有且僅有一個(gè)后繼,最后一個(gè)元素有且僅有一個(gè)前驅(qū),其他元素有且僅有一個(gè)前驅(qū)以及有且僅有一個(gè)后繼。

二、線性表的運(yùn)算

線性表有一些基本運(yùn)算,舉例如下:

(1) 初始化線性表——構(gòu)造一個(gè)空的線性表;(2) 銷毀線性表——釋放線性表占用的內(nèi)存空間;(3) 判線性表是否為空表;(4) 求線性表的長度——返回表中元素個(gè)數(shù);(5) 遍歷線性表——當(dāng)線性表不為空時(shí),順序顯示表中各結(jié)點(diǎn)的值域;(6) 求線性表中指定位置的某個(gè)數(shù)據(jù)元素;(7) 定位查找LocateElem(L,e):返回表L中第1個(gè)值域與e相等的位序。若這樣的元素不存在,則返回值為0。(8) 插入數(shù)據(jù)元素——在L的第i個(gè)元素之前插入新的元素e,L的長度增加1。(9) 刪除數(shù)據(jù)元素——?jiǎng)h除L的第i個(gè)元素,L的長度減1。

三、線性表的順序存儲(chǔ)——順序表

線性表只是一種邏輯結(jié)構(gòu),至于它在計(jì)算機(jī)中是如何存儲(chǔ)的,我們還要專門討論。因?yàn)榫€性表是有順序的,所以很容易想到用數(shù)組來存儲(chǔ)線性表。

線性表的順序存儲(chǔ)結(jié)構(gòu)就是:把線性表中的所有元素按照其邏輯順序依次存儲(chǔ)到一塊連續(xù)的存儲(chǔ)空間中。

用數(shù)組來存儲(chǔ)線性表,其缺點(diǎn)是:
1、在插入、刪除時(shí)要移動(dòng)大量的結(jié)點(diǎn)
2、表的大小在定義數(shù)組時(shí)指定,無法動(dòng)態(tài)更改

為了克服以上缺點(diǎn),有了線性表的鏈?zhǔn)酱鎯?chǔ)。

四、線性表的鏈?zhǔn)酱鎯?chǔ)—鏈表

在鏈?zhǔn)酱鎯?chǔ)中,每個(gè)存儲(chǔ)結(jié)點(diǎn)不僅包含元素本身的信息(稱之為數(shù)據(jù)域),而且包含元素之間邏輯關(guān)系的信息,即包含其后繼結(jié)點(diǎn)的地址信息,這稱為指針域。一般地,每個(gè)結(jié)點(diǎn)有一個(gè)或多個(gè)這樣的指針域。若一個(gè)結(jié)點(diǎn)中的某個(gè)指針域不需要指向任何結(jié)點(diǎn),則僅它的值為空,用NULL表示。

五、單鏈表

在每個(gè)結(jié)點(diǎn)中除包含有數(shù)據(jù)域外,又設(shè)置一個(gè)指針域,用以指向其后繼結(jié)點(diǎn),這樣的表稱為線性單向鏈接表,簡稱單鏈表。

1、不帶頭結(jié)點(diǎn)的單鏈表

這種單鏈表必須有一個(gè)頭指針(假設(shè)叫head),用以指向單鏈表中第一個(gè)結(jié)點(diǎn)。否則單鏈表會(huì)在內(nèi)存中丟失。
示意圖如下:

2、帶頭結(jié)點(diǎn)的單鏈表

為了便于插入和刪除等算法的實(shí)現(xiàn),在單鏈表的第一個(gè)元素之前增加一個(gè)特殊的節(jié)點(diǎn)——稱為頭節(jié)點(diǎn),頭結(jié)點(diǎn)的數(shù)據(jù)域一般不使用,只使用其指針域。這種單鏈表在應(yīng)用時(shí),必須要知道頭結(jié)點(diǎn)的地址,否則單鏈表會(huì)在內(nèi)存中丟失。

示意圖如下:

3、循環(huán)單鏈表

鏈表中最后一個(gè)結(jié)點(diǎn)的指針域不再是NULL,而是指向整個(gè)鏈表的第一個(gè)結(jié)點(diǎn)或者頭結(jié)點(diǎn),從而使鏈表形成一個(gè)環(huán)。和單鏈表相同,循環(huán)單鏈表也有帶頭結(jié)點(diǎn)和不帶頭結(jié)點(diǎn)兩種。

下圖是帶頭結(jié)點(diǎn)的循環(huán)單鏈表:

總結(jié)

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

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