首元节点
線性表的鏈?zhǔn)奖硎竞蛯?shí)現(xiàn):
1.區(qū)分一個(gè)概念:頭結(jié)點(diǎn) 頭指針 首元節(jié)點(diǎn)
首元節(jié)點(diǎn):就是線性表(這里為什么說是線性表,而不說是鏈表呢?因?yàn)槲覀兿葋碇v清楚首元節(jié)點(diǎn)的概念,不涉及指針)當(dāng)中第一個(gè)節(jié)點(diǎn)
頭指針:頭指針是指向首元節(jié)點(diǎn)地址的指針
頭結(jié)點(diǎn):頭結(jié)點(diǎn)并不是我們理解的線性表當(dāng)中第一個(gè)元素的數(shù)據(jù)加上指向第二個(gè)數(shù)據(jù)地址的指針,而是我們指向第一個(gè)節(jié)點(diǎn)前面的一個(gè)節(jié)點(diǎn)。這個(gè)節(jié)點(diǎn)的數(shù)據(jù)部分可以是任意的,是不受限制的
理解:我們把這三個(gè)概念理解成是一列火車,火車的頭就是我們真正意義上的頭節(jié)點(diǎn),此時(shí)的線性表我們稱作鏈表,第一節(jié)車廂的我們稱作是首元節(jié)點(diǎn),火車頭連接第一節(jié)車廂的掛鉤我們稱作是頭指針,火車頭的車廂我們可以乘坐顧客,也可以不乘坐顧客,也就是頭結(jié)點(diǎn)的數(shù)值部分是任意的,可以有數(shù)據(jù)也可以沒有數(shù)據(jù),
++++++++++++++++++++++++++++++++++++++
2.神么情況下,線性鏈表表示的是一個(gè)空的表格呢?
當(dāng)頭結(jié)點(diǎn)的指針為空的時(shí)候我們就說此時(shí)的鏈表是空的,這是相對(duì)于帶頭指針的鏈表進(jìn)行說明的,不是絕對(duì),是相對(duì)的,同時(shí)我們要明確,這是一種動(dòng)態(tài)指針的結(jié)構(gòu),
+++++++++++++++++++++++++++++++++++++
3.線性表以及鏈表的本質(zhì)區(qū)別是什么?
理解:簡單的來說,可以將線性表理解成按照順序來排隊(duì)等候的人,他們之間只是有先后的順序,可能之間是陌生的,而鏈表呢?我們可以理解成大家玩過的老鷹捉小雞,之間通過手拉手的形式進(jìn)行一種特殊的連接,這種連接使得我們不能輕易的進(jìn)行刪除成員以及增加人員的操作,因?yàn)槲覀儎h除第i個(gè)元素,需要放開前一個(gè)元素的衣袖,同時(shí)要求后面的成員不對(duì)我們自己進(jìn)行拽著,很是不方便的。
++++++++++++++++++++++++++++++++++++++++++
4.在鏈表中我們通常使用i,j,q來表示元素的位置,p,q,r來表示指針,是對(duì)照著來進(jìn)行表示的,指針的移動(dòng),數(shù)據(jù)元素就要移動(dòng),同時(shí)在進(jìn)行討論鏈表的時(shí)候是帶有頭結(jié)點(diǎn)的,不帶頭結(jié)點(diǎn)的我們會(huì)有相應(yīng)的說明,這一點(diǎn)是需要注意的
++++++++++++++++++++++++++++++++++++++++++
5.存取數(shù)據(jù)對(duì)于線性表和鏈表也是不相同的概念
順序存取:是相對(duì)于鏈表來進(jìn)行說明的,就是說想要存取數(shù)據(jù)的話,必須一個(gè)一個(gè)來,不能中間進(jìn)行來,比如三本書放成一摞,我們想要拿最下面的一本,那么我們就要拿走上面的兩本書,同時(shí)取書的順序,是取完最上面的一本,然后取第二本,最后我們將最下面的一本取出來,
選擇存取:是相對(duì)于線性結(jié)構(gòu)來進(jìn)行說明的,也是拿取書的例子來進(jìn)行說明,這次我們放置書的順序是立起來,一本一本的靠在一起。那么我們?cè)谶M(jìn)行取書的操作時(shí),就可以有選擇的隨意進(jìn)行取書,因此我們稱作是選擇存取
++++++++++++++++++++++++++++++++++
6.單個(gè)的指針在表示條件的時(shí)候就是表示指針不為空即p,如果是!p的話那么就代表指針為空,這點(diǎn)在鏈表當(dāng)中是很常見的,要記住
+++++++++++++++++++++++++++++++++++
7.data代表著結(jié)點(diǎn)的數(shù)值部分,我們叫做data,e=p->data的意思是返回p指向的數(shù)值,也是可以寫成e=p.data同樣也是返回指針?biāo)赶虻臄?shù)值。
+++++++++++++++++++++++++++++++++++
8.第i個(gè)元素不存在的數(shù)據(jù)結(jié)構(gòu)語言:return ERROR
9.鏈表中的指針是非常重要的,可以幫助我們找到元素的位置,
+++++++++++++++++++++++++++++++++++
10.插入以及刪除元素移動(dòng)指針的位置:
插入元素移動(dòng)指針的順序:設(shè):插入元素我們叫做e,在第i個(gè)元素的位置我們進(jìn)行插入,首先我們將第(i-1)個(gè)元素的指針域放到e元素額指針域,然后將e元素的地址交給(i-1)個(gè)元素的指針域
刪除元素移動(dòng)指針的順序:題設(shè)還是前面的題設(shè),我們先找到第i個(gè)元素,然后將他的指針域給(i-1)個(gè)元素的指針域,同時(shí)要釋放指針free(q)
tips:插入的先后順序是不能進(jìn)行改變的,不然就會(huì)丟失元素
+++++++++++++++++++++++++++++++++++++++++++++
今天的分享就要結(jié)束了,感謝!!!
總結(jié)
- 上一篇: leetcode329. 矩阵中的最长递
- 下一篇: leetcode80. 删除排序数组中的