我是荔園微風(fēng),作為一名在IT界整整25年的老兵,今天總結(jié)一下Visual C++環(huán)境下調(diào)試數(shù)據(jù)結(jié)構(gòu)——線性表之順序存儲(chǔ)結(jié)構(gòu)。?
線性表線性表(Linear List):有限多個(gè)相同類型的數(shù)據(jù)元素類(集合)線性表是最簡(jiǎn)單、最基本的數(shù)據(jù)結(jié)構(gòu)。通俗地講,線性表就是所有的節(jié)點(diǎn)按“一個(gè)連著一個(gè)”的方式組成的一個(gè)整體。
線性表主要的存儲(chǔ)結(jié)構(gòu)有順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。線性表的基本運(yùn)算主要有創(chuàng)建線性表、求線性表長(zhǎng)度、取第i個(gè)節(jié)點(diǎn)、插入數(shù)據(jù)元素、刪除數(shù)據(jù)元素、按值查找數(shù)據(jù)元素。在實(shí)際的算法實(shí)現(xiàn)中,這些基本運(yùn)算一般會(huì)放入程序頭部進(jìn)行說(shuō)明,供程序員進(jìn)行調(diào)用。
順序存儲(chǔ)結(jié)構(gòu)常采用數(shù)組方式實(shí)現(xiàn)。一維數(shù)組形式的順序存儲(chǔ)結(jié)構(gòu)具體如下所示。順序表使用一個(gè)連續(xù)存儲(chǔ)空間相繼存放線性表的各個(gè)節(jié)點(diǎn)。
a1? ?a2? ?a3? ?a4? ?......? ?an? ?......? ......數(shù)組是一種把相同類型的若干元素,有序地組織起來(lái)的集合。集合名就是數(shù)組名。組成數(shù)組的各個(gè)元素稱為數(shù)組元素。通過(guò)數(shù)組元素的位置序號(hào)(下標(biāo)),可獲得某數(shù)組元素的地址,進(jìn)而得到該數(shù)組元素的值。數(shù)組在數(shù)據(jù)結(jié)構(gòu)中常常用來(lái)實(shí)現(xiàn)向量和矩陣。
數(shù)據(jù)結(jié)構(gòu)中,數(shù)組的運(yùn)算通常有兩個(gè):
(1)給定數(shù)組的下標(biāo),存取相應(yīng)的數(shù)據(jù)元素
(2)給定數(shù)組的下標(biāo),修改對(duì)應(yīng)的數(shù)據(jù)元素的值。
數(shù)組的運(yùn)算通常不涉及插入和刪除運(yùn)算。
一維數(shù)組即數(shù)組中每個(gè)元素都只有一個(gè)下標(biāo)的數(shù)組。兩個(gè)一維數(shù)組組成二維數(shù)組,n個(gè)一維數(shù)組組成n維數(shù)組。假定a是數(shù)組的首地址,L是數(shù)組元素的長(zhǎng)度,行優(yōu)先存儲(chǔ)(先存儲(chǔ)第一行,然后存儲(chǔ)第二行,……,直至最后一行),則數(shù)組某元素的地址對(duì)應(yīng)關(guān)系見下。
數(shù)組類型? ? ? ? ? 數(shù)組表示形式? ? ? ? ? 某元素對(duì)應(yīng)的存儲(chǔ)地址 一維數(shù)組? ? ? ? ? a[n]? ? ? ? ? ? ? ? ? ? ? ? ? 元素a[i]的存儲(chǔ)地址:a+(i-1)*L 二維數(shù)組? ? ? ? ? a[m][n](m行n列)? ? ? ?元素a[i][j]的存儲(chǔ)地址:a+(i*n+j)*L2.稀疏矩陣稀疏矩陣即矩陣中0元素個(gè)數(shù)遠(yuǎn)遠(yuǎn)多于非0元素,并且非0元素分布沒(méi)有規(guī)律。稀疏矩陣可以采用三元組數(shù)組和十字鏈表兩種存儲(chǔ)方式,兩種方式均只存儲(chǔ)非0元素。
三元組數(shù)組:非0元素用三元組(行號(hào)、列號(hào)、值)表示,并全部存儲(chǔ)在數(shù)組中。這也完成了稀疏矩陣的壓縮。下面給出了一個(gè)稀疏矩陣用三元組數(shù)組表示的例子。
0? ?0? ?6? ?0? ?9? ?0
7? ?0? ?0? ?0? ?0? ?0
0? ?0? ?0? ?0? ?0? ?0
0? ?0? ?6? ?0? ?0? ?0
0? ?3? ?0? ?0? ?2? ?0
0? ?0? ?0? ?0? ?0? ?1
以上矩陣用三無(wú)組表示為:
(1? ?3? ?6)
(1? ?5? ?9)
(2? ?1? ?7)
(4? ?3? ?6)
(5? ?2? ?3)
(5? ?5? ?2)
(6? ?6? ?1)
十字鏈表:非0元素均為十字鏈表的一個(gè)節(jié)點(diǎn),節(jié)點(diǎn)有5個(gè)域(行號(hào)、列號(hào)、值、行和列的后繼指針)。 常見的特殊稀疏矩陣有上三角、下三角和三對(duì)角矩陣。具體特點(diǎn)見下。
上三角矩陣(當(dāng)i>j時(shí),矩陣元素aij=0)
a11? ?a12? ?a13? ?a14? ?a15
0? ? ? ?a22? ?a23? ?a24? ?a25
0? ? ? ?0? ? ? ?a33? ?a34? ?a35
0? ? ? ?0? ? ? ?0? ? ? ?a44? ?a45
0? ? ? ?0? ? ? ?0? ? ? ?0? ? ? ?a55
矩陣元素aij對(duì)應(yīng)一維數(shù)組下標(biāo):(2n-i+2)*(i-1)/2+j-i+1 化簡(jiǎn)為 (2n-i)*(i-1)/2+j下三角矩陣(當(dāng)i a11? ?0? ? ? ?0? ? ? ?0? ? ? ?0 a21? ?a22? ?0? ? ? ?0? ? ? ?0 a31? ?a32? ?a33? ?0? ? ? ?0 a41? ?a42? ?a43? ?a44? ?0 a51? ?a52? ?a53? ?a54? ?a55 三對(duì)角矩陣 a11? ?a12? ? 0??? ? ?0? ??? ?0?? a21? ?a22? ?a23? ??0? ? ? ?0 0? ? ? ?a32? ?a33? ?a34? ? 0 0? ? ? ?0? ? ? ?a43? ?a44? ?a45 0? ? ? ?0? ? ? ?0? ? ? ?a54? ?a55 順序表的特點(diǎn)是:邏輯相鄰的數(shù)據(jù)元素,物理結(jié)構(gòu)必相鄰。 作者簡(jiǎn)介:荔園微風(fēng),1981年生,高級(jí)工程師,浙大工學(xué)碩士,軟件工程項(xiàng)目主管,做過(guò)程序員、軟件設(shè)計(jì)師、系統(tǒng)架構(gòu)師,早期的Windows程序員,Visual Studio忠實(shí)用戶,C/C++使用者,是一位在計(jì)算機(jī)界學(xué)習(xí)、拼搏、奮斗了25年的老將,經(jīng)歷了UNIX時(shí)代、桌面WIN32時(shí)代、Web應(yīng)用時(shí)代、云計(jì)算時(shí)代、手機(jī)安卓時(shí)代、大數(shù)據(jù)時(shí)代、ICT時(shí)代、AI深度學(xué)習(xí)時(shí)代、智能機(jī)器時(shí)代,我不知道未來(lái)還會(huì)有什么時(shí)代,只記得這一路走來(lái),充滿著艱辛與收獲,愿同大家一起走下去,充滿希望的走下去。 你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站名稱:VisualC++環(huán)境下調(diào)試數(shù)據(jù)結(jié)構(gòu)——線性表(順序存儲(chǔ)結(jié)構(gòu))-創(chuàng)新互聯(lián)
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、電子商務(wù)、動(dòng)態(tài)網(wǎng)站、微信小程序、企業(yè)網(wǎng)站制作、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)
URL網(wǎng)址:http://aaarwkj.com/article16/ieegg.html
猜你還喜歡下面的內(nèi)容