2.2線性表
線性表的邏輯結(jié)構(gòu)是由n個數(shù)據(jù)元素組成的一個有限序列。線性表中所包含元素的個數(shù)叫線性表的長度.它是可變的.可同線性表中增加或刪除元素。線性表包括順序表、鏈表、散列表和串等。
1、線性鏈表
線性鏈表也稱為單鏈表,其每個一節(jié)點中只包含一個指針域。對鏈表進(jìn)行插人、刪除運算時只需改變節(jié)點中指針域的值。
。1) 在指針一P后插人指針9的關(guān)鍵運算步驟:
q ↑. link:=P↑.link:
p ↑. link:=q;
。ǎ玻﹦h除指針P后繼節(jié)點q的關(guān)鍵運算步驟:
q:=p↑ . link;
p↑. link:=q↑.link;
。3)在第一個節(jié)點(或稱頭節(jié)點)前插人一個指針P的關(guān)鍵運算步驟:
p↑. link:=head;
head:二P;
。ǎ矗﹦h除表中頭節(jié)點的關(guān)鍵運算步驟:
head:=head↑ . link:
2、雙鏈表
在雙鏈表中,每個節(jié)點中設(shè)置有兩個指針域,分別用以指向其前驅(qū)節(jié)點和后繼節(jié)點。rlink指向節(jié)點的后繼,llink指向節(jié)點的前驅(qū),這樣的結(jié)構(gòu)方便向后和向前查找。
。╨)若要在雙鏈表中刪除指針P所指的節(jié)點時,只需修改其前驅(qū)的rlink字段和后繼的Mink字段,步驟如下:
p↑ . llink↑. rlink:=p↑. rlink;
P↑T.rlink↑. llink:=P↑.llink;
(2)如果要在指針P后面插人指針q所指的新節(jié)點,只需修改P指針?biāo)腹?jié)點的rlink字段和原來后繼均Ilink字段,并重新設(shè)置q所指節(jié)點的Mink和rlink值,步驟如下:
q ↑. Mink:=P:
q↑.rlink:=P↑.rlink;
P↑.rlink r. Rink:=q;
p↑.rlink:=q;
3、可利用空間表
可利用空間表的作用是管理可用于鏈表插人和刪除的節(jié)點,當(dāng)鏈表插人需要一個新節(jié)點時,就從可利用空間表中刪除第一個節(jié)點,用這個節(jié)點去做鏈表插人;當(dāng)從鏈表中刪除一個節(jié)點時,就把這個節(jié)點插人到可利用空間表的第一個節(jié)點前面。