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