單鏈表存儲(chǔ)結(jié)構(gòu)LNode?
LNode* = LinkList, LNode,*LinkListl,都是匿名結(jié)構(gòu)體別名,Lnode是實(shí)體,而LiskList是這種ElemType類型的指針,就是經(jīng)常在參數(shù)表中表示一個(gè)鏈表都用LinkList定義一個(gè)指向頭結(jié)點(diǎn)的指針了。
單鏈表是一種鏈?zhǔn)酱嫒〉臄?shù)據(jù)結(jié)構(gòu),用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素。鏈表中的數(shù)據(jù)是以結(jié)點(diǎn)來表示的,每個(gè)結(jié)點(diǎn)的構(gòu)成:元素(數(shù)據(jù)元素的映象) + 指針(指示后繼元素存儲(chǔ)位置),元素就是存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元,指針就是連接每個(gè)結(jié)點(diǎn)的地址數(shù)據(jù)。以“結(jié)點(diǎn)的序列”表示線性表稱作線性鏈表(單鏈表) 單鏈表是鏈?zhǔn)酱嫒〉慕Y(jié)構(gòu),為找第 i 個(gè)數(shù)據(jù)元素,必須先找到第 i-1 個(gè)數(shù)據(jù)元素。因此,查找第 i 個(gè)數(shù)據(jù)元素的基本操作為:移動(dòng)指針,比較 j 和 i 單鏈表 1、鏈接存儲(chǔ)方法 鏈接方式存儲(chǔ)的線性表簡稱為鏈表(Linked List)。鏈表的具體存儲(chǔ)表示為: ① 用一組任意的存儲(chǔ)單元來存放線性表的結(jié)點(diǎn)(這組存儲(chǔ)單元既可以是連續(xù)的,也可以是不連續(xù)的) ② 鏈表中結(jié)點(diǎn)的邏輯次序和物理次序不一定相同。為了能正確表示結(jié)點(diǎn)間的邏輯關(guān)系,在存儲(chǔ)每個(gè)結(jié)點(diǎn)值的同時(shí),還必須存儲(chǔ)指示其后繼結(jié)點(diǎn)的地址(或位置)信息(稱為指針(pointer)或鏈(link)) 順序存儲(chǔ)方法它是把邏輯上相鄰的結(jié)點(diǎn)存儲(chǔ)在物理位置相鄰的存儲(chǔ)單元里,結(jié)點(diǎn)間的邏輯關(guān)系由存儲(chǔ)單元的鄰接關(guān)系來體現(xiàn),由此得到的存儲(chǔ)表示稱為順序存儲(chǔ)結(jié)構(gòu)。順序存儲(chǔ)結(jié)構(gòu)是一種最基本的存儲(chǔ)表示方法,通常借助于程序設(shè)計(jì)語言中的數(shù)組來實(shí)現(xiàn)。鏈接存儲(chǔ)方法它不要求邏輯上相鄰的結(jié)點(diǎn)在物理位置上亦相鄰,結(jié)點(diǎn)間的邏輯關(guān)系是由附加的指針字段表示的。由此得到的存儲(chǔ)表示稱為鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)通常借助于程序設(shè)計(jì)語言中的指針類型來實(shí)現(xiàn)。順序存儲(chǔ)和鏈接存儲(chǔ)的基本原理 順序存儲(chǔ)和鏈接存儲(chǔ)是數(shù)據(jù)的兩種最基本的存儲(chǔ)結(jié)構(gòu)。在順序存儲(chǔ)中,每個(gè)存儲(chǔ)空間含有所存元素本身的信息,元素之間的邏輯關(guān)系是通過數(shù)組下標(biāo)位置簡單計(jì)算出來的線性表的順序存儲(chǔ),若一個(gè)元素存儲(chǔ)在對應(yīng)數(shù)組中的下標(biāo)位置為i,則它的前驅(qū)元素在對應(yīng)數(shù)組中的下標(biāo)位置為i-1,它的后繼元素在對應(yīng)數(shù)組中的下標(biāo)位置為i+1。在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中,存儲(chǔ)結(jié)點(diǎn)不僅含有所存元素本身的信息,而且含有元素之間邏輯關(guān)系的信息。數(shù)據(jù)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)可用鏈接表來表示。其中data表示值域,用來存儲(chǔ)節(jié)點(diǎn)的數(shù)值部分。Pl,p2,…,Pill(1n≥1)均為指針域,每個(gè)指針域?yàn)槠鋵?yīng)的后繼元素或前驅(qū)元素所在結(jié)點(diǎn)(以后簡稱為后繼結(jié)點(diǎn)或前驅(qū)結(jié)點(diǎn))的存儲(chǔ)位置。通過結(jié)點(diǎn)的指針域(又稱為鏈域)可以訪問到對應(yīng)的后繼結(jié)點(diǎn)或前驅(qū)結(jié)點(diǎn),若一個(gè)結(jié)點(diǎn)中的某個(gè)指針域不需要指向其他結(jié)點(diǎn),則令它的值為空(NULL)。在數(shù)據(jù)的順序存儲(chǔ)中,由于每個(gè)元素的存儲(chǔ)位置都可以通過簡單計(jì)算得到,所以訪問元素的時(shí)間都相同;而在數(shù)據(jù)的鏈接存儲(chǔ)中,由于每個(gè)元素的存儲(chǔ)位置保存在它的前驅(qū)或后繼結(jié)點(diǎn)中,所以只有當(dāng)訪問到其前驅(qū)結(jié)點(diǎn)或后繼結(jié)點(diǎn)后才能夠按指針訪問到,訪問任一元素的時(shí)間與該元素結(jié)點(diǎn)在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中的位置有關(guān)。