1锉桑、線性表的定義
線性表(List):零個(gè)或多個(gè)數(shù)據(jù)元素的有限序列
第一個(gè)元素?zé)o前驅(qū)铺厨,最后一個(gè)元素?zé)o后繼陪白,其他元素都有且只有一個(gè)前驅(qū)和后繼颈走。然后,線性表強(qiáng)調(diào)是有限的咱士,
線性表元素的個(gè)數(shù)n(n≥0)定義為線性表的長(zhǎng)度立由,當(dāng)n=0時(shí)轧钓,成為空表。
2锐膜、線性表的抽象數(shù)據(jù)類型
對(duì)于不同的應(yīng)用毕箍,線性表的基本操作是不同的,上述操作是最基本的枣耀,對(duì)于實(shí)際問題中涉及的關(guān)于線性表的更復(fù)雜操作霉晕,完全可以用這些基本操作的組合來實(shí)現(xiàn)。
3捞奕、線性表的順序存儲(chǔ)結(jié)構(gòu)
3.1順序存儲(chǔ)定義
線性表的順序存儲(chǔ)結(jié)構(gòu)牺堰,指的是用一段地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表的數(shù)據(jù)元素。
存儲(chǔ)單元存儲(chǔ)數(shù)據(jù)元素
3.2順序存儲(chǔ)結(jié)構(gòu)的插入與刪除
3.2.1
3.2.2線性表順序存儲(chǔ)結(jié)構(gòu)的優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
①無須為表示表中元素之間的邏輯關(guān)系而增加額外的存儲(chǔ)空間
②可以快速地存取表中任一位置的元素
缺點(diǎn):
①插入和刪除操作需要移動(dòng)大量元素
②當(dāng)線性表長(zhǎng)度變化較大時(shí)颅围,難以確定存儲(chǔ)空間的容量
③造成存儲(chǔ)空間的“碎片”
4伟葫、線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)
線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的特點(diǎn)是用一組任意的存儲(chǔ)單元存儲(chǔ)線性表的數(shù)據(jù)元素,這組存儲(chǔ)單元可以是連續(xù)的院促,也可以是不連續(xù)的筏养。這就意味著,這些數(shù)據(jù)元素可以存在內(nèi)存未被占用的任意位置
以前在順序結(jié)構(gòu)中常拓,每個(gè)數(shù)據(jù)元素只需要存數(shù)據(jù)元素信息渐溶,現(xiàn)在鏈?zhǔn)浇Y(jié)構(gòu)中,除了要存儲(chǔ)元素信息外弄抬,還要存儲(chǔ)它的后繼元素的存儲(chǔ)地址茎辐。
頭指針與頭結(jié)點(diǎn)的異同
結(jié)點(diǎn)由存放數(shù)據(jù)元素的數(shù)據(jù)域以及存放后繼結(jié)點(diǎn)地址的指針域組成。
單鏈表結(jié)構(gòu)與順序存儲(chǔ)結(jié)構(gòu)優(yōu)缺點(diǎn)
結(jié)論:若線性表需要頻繁查找掂恕,很少進(jìn)行插入和刪除操作時(shí)拖陆,宜采用順序存儲(chǔ)結(jié)構(gòu)。若需要頻繁插入和刪除時(shí)懊亡,宜采用單鏈表結(jié)構(gòu)依啰。
5、靜態(tài)鏈表
C語言具有指針能力店枣,使得它可以非常容易操作內(nèi)存中的地址和數(shù)據(jù)速警,但有些語言沒有指針,可以用數(shù)組代替鸯两。
我們讓數(shù)組的元素都是由兩個(gè)數(shù)據(jù)域組成坏瞄,data
和cur。也就是說甩卓,數(shù)組的每一個(gè)下標(biāo)都對(duì)應(yīng)一個(gè)data和一個(gè)cur鸠匀。數(shù)據(jù)域data,用來存放數(shù)據(jù)元素,也就是通常我們要處理的數(shù)據(jù)逾柿,而游標(biāo)cur相當(dāng)于單鏈表中國(guó)的nexe指針缀棍,存放該元素的后繼在數(shù)組中的下標(biāo)宅此。
我們把這種用數(shù)組描述的鏈表叫做靜態(tài)鏈表,這種描述方法還有起名叫做游標(biāo)實(shí)現(xiàn)法爬范。
假設(shè)我們已經(jīng)將數(shù)據(jù)存入靜態(tài)鏈表父腕,比如分別存放著“甲”、“乙”青瀑、“丁”璧亮、“戊”、“己”斥难、“庚”等數(shù)據(jù)枝嘶,則它將處于下圖狀態(tài):
此時(shí)“甲”這里存有下一元素“乙”的游標(biāo)2,“乙”則存有下一元素“丁”的下標(biāo)3哑诊,而“庚”是最后一個(gè)有值元素群扶,所以它的cur設(shè)置為0。而最后一個(gè)元素的cur則因“甲”是第一有值元素而存有它的下標(biāo)為1.而第一個(gè)元素則因空閑空間的第一個(gè)元素下標(biāo)為7镀裤,所以它的cur存有7竞阐。