成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

程序員“修煉成神”的必經(jīng)之路——數(shù)據(jù)結(jié)構(gòu)(第2章 線性表)

SolomonXie / 875人閱讀

摘要:線性表的基本運(yùn)算置空表,構(gòu)造一個空的線性表。三線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)單鏈表線性鏈表鏈?zhǔn)酱鎯Y(jié)構(gòu)除了存儲本身的信息之外,還需要一個存儲指示其后繼元素存儲位置的指針,由這兩個部分組成元素的存儲映像通常稱為結(jié)點(diǎn)。用這種方法存儲的線性表稱為鏈表。

目錄


前言

? ? ? ?今天我們來學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的第2章——線性表。線性表是最簡單和最常用的一種數(shù)據(jù)結(jié)構(gòu),所以這一章是數(shù)據(jù)結(jié)構(gòu)當(dāng)中的重點(diǎn)內(nèi)容,小伙伴們一定要熟練掌握!本文主要介紹基本概念,算法和代碼實(shí)現(xiàn)不過多贅述。


一、線性表的定義和基本運(yùn)算

1.線性表的邏輯定義

? ? 1)線性表的定義

? ? ? ? 線性表是由??個數(shù)據(jù)元素(結(jié)點(diǎn))?組成的有限序列。其中,數(shù)據(jù)元素的個數(shù)??為表的長度。當(dāng)??為零時稱為空表。

? ? 2)線性表的邏輯特征

????????對于一個非空的線性表

????????① 有且僅有一個稱為開始元素的?,它沒有前趨,僅有一個直接后繼?;

????????② 有且僅有一個稱為終端元素的?,它沒有后繼,僅有一個直接前趨;

????????③ 其余元素?稱為內(nèi)部元素,它們都有且僅有一個直接前趨??和一個直接后繼?。

2.線性表的基本運(yùn)算

(1)置空表 InitList(L),構(gòu)造一個空的線性表 L。

(2)求表長 ListLength(L),返回線性表 L 中元素個數(shù),即表長。

(3)取表中第??個元素 GetNode(L,i),若1ListLength(L),則返回第??個元素?。

(4)按值查找 LocateNode(L,x),在表 L 中查找第一個值為??的元素,并返回該元素在表 L 中的位置,若表中沒有元素的值為?,則返回 0 值。

(5)插入InsertList(L,i,x),在表 L 的第??個元素之前插入一個值為??的新元素,表 L 的長度加1。

(6)刪除DeleteList(L,i),刪除表 L 的第??個元素,表 L 的長度減1。


二、線性表的順序存儲和基本運(yùn)算

1.線性表的順序存儲

???????線性表的順序存儲指的是將線性表的數(shù)據(jù)元素按其邏輯次序依次存入一組地址連續(xù)的存儲單元里,用這種方法存儲的線性表稱為順序表。順序表是一種隨機(jī)存取結(jié)構(gòu)。

2.順序表上的基本運(yùn)算

? ? 1)插入運(yùn)算

? ? ? ? 線性表的插入運(yùn)算是指在線性表的第?-1 個元素和第??個元素之間插入一個新元素?,使長度為??的線性表:

()

????????變?yōu)殚L度為?+1 的線性表:

()

? ? ? ? 插入是向后移動元素。

? ? 2)刪除運(yùn)算

???????線性表的刪除運(yùn)算是指將表中第??個元素刪除,使長度為??的線性表

()

變?yōu)殚L度為?-1 的線性表:

()

????????刪除是向前移動元素。


三、線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)

1.單鏈表(線性鏈表)

???????鏈?zhǔn)酱鎯Y(jié)構(gòu)除了存儲??本身的信息之外,還需要一個存儲指示其后繼元素??存儲位置的指針,由這兩個部分組成元素??的存儲映像通常稱為結(jié)點(diǎn)。它包括兩個域:存儲數(shù)據(jù)元素的域稱為數(shù)據(jù)域,存儲直接后繼存儲地址的域稱為指針域。用這種方法存儲的線性表稱為鏈表。

????????個結(jié)點(diǎn)鏈成一個鏈表,即為線性表()的鏈?zhǔn)酱鎯Y(jié)構(gòu)。由于這種鏈表的每個結(jié)點(diǎn)只包含一個指針域,因此又稱為單鏈表

2.單鏈表上的基本運(yùn)算

? ? 1)建立單鏈表

???????建立單鏈表的常用方法有兩種:頭插法尾插法。

???????① 頭插法建表

???????頭插法建表是從一個空表開始,重復(fù)讀入數(shù)據(jù),生成新結(jié)點(diǎn),將讀入的數(shù)據(jù)存放到新結(jié)點(diǎn)的數(shù)據(jù)域中,然后將新結(jié)點(diǎn)插入到當(dāng)前鏈表的表頭上,直到讀入結(jié)束標(biāo)志為止。

???????② 尾插法建表

???????尾插法是將新結(jié)點(diǎn)插入在當(dāng)前鏈表的表尾上,因此需要增設(shè)一個尾指針 rear,使其始終指向鏈表的尾結(jié)點(diǎn)。

? ? 2)查找運(yùn)算(帶頭結(jié)點(diǎn))

???????①?按結(jié)點(diǎn)序號查找

? ? ? ?在單鏈表中要查找第??個結(jié)點(diǎn),就必須從鏈表的第1個結(jié)點(diǎn)(開始結(jié)點(diǎn),序號為1)開始,序號為 0 的是頭結(jié)點(diǎn),p 指向當(dāng)前結(jié)點(diǎn),j 為計數(shù)器,其初始值為1,當(dāng) p 掃描下一個結(jié)點(diǎn)時,計數(shù)器加1。當(dāng) j=?時,指針 p 所指向的結(jié)點(diǎn)就是要找的結(jié)點(diǎn)。

???????② 按結(jié)點(diǎn)值查找

???????在單鏈表中按值查找結(jié)點(diǎn),就是從鏈表的開始結(jié)點(diǎn)出發(fā),順鏈逐個將結(jié)點(diǎn)的值和給定值 k 進(jìn)行比較,若遇到相等的值,則返回該結(jié)點(diǎn)的存儲位置,否則返回 NULL。

? ? 3)插入運(yùn)算

???????鏈表插入時不需要移動結(jié)點(diǎn),但需要用移動指針來進(jìn)行位置查找。

? ? 4)刪除運(yùn)算?

???????鏈表刪除和插入同理,不需要移動結(jié)點(diǎn),但需要移動指針。

3.循環(huán)鏈表

???????循環(huán)鏈表的特點(diǎn)是單鏈表中最后一個結(jié)點(diǎn)(終端結(jié)點(diǎn))的指針域不為空,而是指向鏈表的頭結(jié)點(diǎn),使整個鏈表構(gòu)成一個環(huán)。

4.雙向鏈表

???????雙向鏈表的特點(diǎn)是在單鏈表的結(jié)點(diǎn)類型中增加一個指向其直接前趨的指針域。這樣形成的鏈表中就有兩條不同方向的鏈。因此稱之為雙向鏈表。


四、順序表和鏈表的比較

???????順序表可以隨機(jī)存取表中任一元素,插入和刪除操作時需移動大量元素。鏈表插入和刪除不用大量移動元素,但失去了隨機(jī)訪問的特點(diǎn)。

1.時間性能

???????順序表查詢快,增刪慢;鏈表查詢慢,增刪快。

???????在實(shí)際問題中,若經(jīng)常對線性表進(jìn)行查找操作,則以順序表存儲為宜。若經(jīng)常對線性表進(jìn)行插入和刪除操作,則以鏈表存儲為宜。

2.空間性能

???????順序表的存儲空間是靜態(tài)分配的,設(shè)置過大將產(chǎn)生空間浪費(fèi),設(shè)置過小會使空間溢出,因此順序存儲結(jié)構(gòu)適合對數(shù)據(jù)量大小能事先知道的應(yīng)用問題。

???????而鏈表的存儲空間是動態(tài)分配的,只要內(nèi)存有空閑空間,就不會產(chǎn)生溢出,因此鏈?zhǔn)酱鎯Y(jié)構(gòu)適合數(shù)據(jù)量變化較大的動態(tài)問題。


ps:博主創(chuàng)作不易,如果喜歡就點(diǎn)個贊吧!?( ′???` )比心

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/122177.html

相關(guān)文章

  • 新編html網(wǎng)頁設(shè)計從入門到精通 (龍馬工作室) pdf掃描版?

    新編html網(wǎng)頁設(shè)計從入門到精通共分為21章,全面系統(tǒng)地講解了html的發(fā)展歷史及4.0版的新特性、基本概念、設(shè)計原則、文件結(jié)構(gòu)、文件屬性標(biāo)記、用格式標(biāo)記進(jìn)行頁面排版、使用圖像裝飾頁面、超鏈接的使用、使用表格組織頁面、使用多媒體美化頁面、創(chuàng)建多框架頁面、動態(tài)網(wǎng)頁的制作、使用層疊樣式表(css)美化頁面、javascript語言、數(shù)組和字符串以及表達(dá)式與程序的流程控制等內(nèi)容。 本書適合作為培訓(xùn)學(xué)校的...

    荊兆峰 評論0 收藏0
  • ApacheCN 人工智能知識樹 v1.0

    摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識點(diǎn)合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...

    劉厚水 評論0 收藏0
  • 數(shù)據(jù)科學(xué) 5 主成分分析(降維)、相關(guān)性

    摘要:主成分分析就是降維,通過線性組合,把多個原始變量合并成若干個主成分,這樣每個主成分都變成原始變量的線性組合。相關(guān)系數(shù)系數(shù)為為為。從結(jié)果看,這個數(shù)據(jù)可能不太適合用來分析,因?yàn)榻档骄S后的代筆性不足。 這兩天用學(xué)了主成分分析,用的是PCA。主成分分析就是降維,通過線性組合,把多個原始變量合并成若干個主成分,這樣每個主成分都變成原始變量的線性組合。所以你想看具體哪個特征對結(jié)果的影響大,通過PC...

    ixlei 評論0 收藏0
  • 優(yōu)秀序員都應(yīng)該學(xué)習(xí) GitHub 上開源數(shù)據(jù)結(jié)構(gòu)與算法項(xiàng)目

    摘要:強(qiáng)烈推薦上值得前端學(xué)習(xí)的數(shù)據(jù)結(jié)構(gòu)與算法項(xiàng)目,包含圖的演示過程與視頻講解。該倉庫包含了多種基于的算法與數(shù)據(jù)結(jié)構(gòu),提供進(jìn)一步閱讀的解釋和鏈接。數(shù)據(jù)結(jié)構(gòu)和算法必知必會的個代碼實(shí)現(xiàn)。 showImg(https://segmentfault.com/img/bVbvpYZ); 前言 算法為王。想學(xué)好前端,先練好內(nèi)功,內(nèi)功不行,就算招式練的再花哨,終究成不了高手;只有內(nèi)功深厚者,前端之路才會走得...

    cheukyin 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<