更新時(shí)間:2020-12-11 17:36:22 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1968次
線性表是最基本、最簡(jiǎn)單、也是最常用的一種數(shù)據(jù)結(jié)構(gòu),一個(gè)線性表是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。數(shù)據(jù)元素是一個(gè)抽象的符號(hào),其具體含義在不同的情況下一般不同。
在稍復(fù)雜的線性表中,一個(gè)數(shù)據(jù)元素可由多個(gè)數(shù)據(jù)項(xiàng)(item)組成,此種情況下常把數(shù)據(jù)元素稱為記錄(record),含有大量記錄的線性表又稱文件(file)。線性表中的個(gè)數(shù)n定義為線性表的長(zhǎng)度,n=0時(shí)稱為空表。在非空表中每個(gè)數(shù)據(jù)元素都有一個(gè)確定的位置,如用ai表示數(shù)據(jù)元素,則i稱為數(shù)據(jù)元素ai在線性表中的位序。
線性表中數(shù)據(jù)元素之間的關(guān)系是一對(duì)一的關(guān)系,即除了第一個(gè)和最后一個(gè)數(shù)據(jù)元素之外,其它數(shù)據(jù)元素都是首尾相接的(注意,這句話只適用大部分線性表,而不是全部。比如,循環(huán)鏈表邏輯層次上也是一種線性表(存儲(chǔ)層次上屬于鏈?zhǔn)酱鎯?chǔ),但是把最后一個(gè)數(shù)據(jù)元素的尾指針指向了首位結(jié)點(diǎn))。
線性表主要分為兩大類:順序表和鏈表
一、順序表
順序表是指用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表中的數(shù)據(jù)元素的線性表。
因?yàn)檫@種方式與高級(jí)程序設(shè)計(jì)語(yǔ)言中一維數(shù)組的表示和實(shí)現(xiàn)相一致,所以也稱為數(shù)組表示法。采用順序表表示的線性表,表中邏輯位置相鄰的數(shù)據(jù)元素將存放到存儲(chǔ)器中物理地址相鄰的存儲(chǔ)單元之中,表中元素的邏輯關(guān)系與存儲(chǔ)順序(物理關(guān)系)相符,換言之,順序表中數(shù)據(jù)元素的邏輯關(guān)系是以其在存儲(chǔ)結(jié)構(gòu)中的物理(位置)關(guān)系來(lái)表示的。
因此,在順序表中,可以根據(jù)順序表中數(shù)據(jù)元素的位序,隨機(jī)訪問(wèn)表中的任一元素,即順序表是一種隨機(jī)存取的存儲(chǔ)結(jié)構(gòu)。
二、鏈表
鏈表就是指采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)表示和實(shí)現(xiàn)的線性表。
鏈表的特點(diǎn)是采用一組任意的存儲(chǔ)單元來(lái)存放線性表中的數(shù)據(jù)元素,這些存儲(chǔ)單元可以是連續(xù)的,也可以是不連續(xù)的。 在鏈表中,數(shù)據(jù)元素之間的邏輯關(guān)系并不依賴其對(duì)應(yīng)的存儲(chǔ)地址,而是通過(guò)設(shè)置專門用于指示數(shù)據(jù)元素之間邏輯關(guān)系的指針來(lái)描述。
因此,在鏈表中的每個(gè)數(shù)據(jù)元素是由用于存放代表其本身信息的數(shù)據(jù)域和用于存放指示數(shù)據(jù)元素之間邏輯關(guān)系的指針域兩部分組成的,數(shù)據(jù)元素的這種特殊存儲(chǔ)方式,稱為 結(jié)點(diǎn)(Node) 。
根據(jù)鏈表結(jié)點(diǎn)中包含指針域的指針個(gè)數(shù)、指針指向和連接方式,可將鏈表分為線性鏈表、循環(huán)鏈表、雙向鏈表、多重鏈表、十字鏈表、二叉鏈表、鄰接表、鄰接多重表等,其中線性鏈表、循環(huán)鏈表和雙向鏈表用于實(shí)現(xiàn)線性表的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),其他形式則用于實(shí)現(xiàn)擴(kuò)展線性結(jié)構(gòu)(數(shù)組和廣義表等)或非線性結(jié)構(gòu)(樹(shù)、圖等)。
線性表作為數(shù)據(jù)結(jié)構(gòu)中的重要組成成員,線性表的邏輯結(jié)構(gòu)簡(jiǎn)單,便于實(shí)現(xiàn)和操作,因此,線性表在實(shí)際應(yīng)用中得到了廣泛應(yīng)用。在本站的數(shù)據(jù)結(jié)構(gòu)和算法教程中還有對(duì)許多的優(yōu)秀的數(shù)據(jù)結(jié)構(gòu)全面解析,讓我們能夠快速掌握各種數(shù)據(jù)結(jié)構(gòu)。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)