首页
/
每日頭條
/
科技
/
數據結構中怎麼表示數組
數據結構中怎麼表示數組
更新时间:2025-08-30 01:37:29

數組的基本概念

數組是一個二元組(idx,value)的集合,對每個idx,都有一個value值與之對應。idx稱為下标,可以由一個整數、兩個整數或多個整數構成,下标含有d(d≥1)個整數稱為維數是d。

數組按維數分為一維、二維和多維數組。

一維數組A是n(n>1)個相同類型元素a0,a1,…,an-1構成的有限序列,其邏輯表示為A=(a0,a1,…,an-1),其中,A是數組名,ai(0≤i≤n-1)是數組A中序号為i的元素。

一個二維數組可以看作是每個數據元素都是相同類型的一維數組的一維數組。

以此類推

數據結構中怎麼表示數組(數據結構串和數組)1

數組具有以下特點

(1)數組中各元素都具有統一的數據類型。

(2)d(d≥1)維數組中的非邊界元素具有d個前驅元素和d個後繼元素。

(3)數組維數确定後,數據元素個數和元素之間的關系不再發生改變,特别适合于順序存儲。

(4)每個有意義的下标都存在一個與其相對應的數組元素值。

d維數組抽象數據類型

數據結構中怎麼表示數組(數據結構串和數組)2

數組的主要操作是存取元素值,沒有插入和删除操作,所以數組通常采用順序存儲方式來實現。

一維數組

一維數組的所有元素依邏輯次序存放在一片連續的内存存儲單元中。

其起始地址為第一個元素a0的地址即LOC(a0)。

假設每個數據元素占用k個存儲單元。

則任一數據元素ai的存儲地址LOC(ai)就可由以下公式求出

數據結構中怎麼表示數組(數據結構串和數組)3

d維數組

mn列的二維數組Am×n=(aij)為例讨論(二維數組也稱為矩陣)。

數據結構中怎麼表示數組(數據結構串和數組)4

按行優先存儲

假設每個元素占k個存儲單元,LOC(a0,0)表示a0,0元素的存儲地址。對于元素aij

ai,j前面有0~i-1共i行,每行n個元素,共有i×n個元素。

在第i行中前面有a[i,0..j-1],共j個元素。

合起來,ai,j前面有i×n j個元素。

數據結構中怎麼表示數組(數據結構串和數組)5

按列優先存儲

假設每個元素占k個存儲單元,LOC(a0,0)表示a0,0元素的存儲地址。對于元素aij

ai,j前面有0~j-1共j列,每列m個元素,共有j×m個元素。

在第j列中前面有a[0..i-1,j],共i個元素。

合起來,ai,j前面有j×m i個元素。則:

數據結構中怎麼表示數組(數據結構串和數組)6

數據結構中怎麼表示數組(數據結構串和數組)7

例子:設有二維數組a[1..50,1..80],其a[1][1]元素的地址為2000,每個元素占2個存儲單元,若按行優先存儲,則元素a[45][68]的存儲地址為多少?若按列優先存儲,則元素a[45][68]的存儲地址為多少?

按行優先存儲

元素a[45][68]前面有1~44行,每行80個元素,計44×80個元素。

在第45行中,元素a[45][68]前面有a[45][1..67]計67個元素,這樣元素a[45][68]前面存儲的元素個數=44×80 67。

LOC(a[45][68])=2000 (44×80 67)×2=9174。

例子:設有二維數組a[1..50,1..80],其a[1][1]元素的地址為2000,每個元素占2個存儲單元,若按行優先存儲,則元素a[45][68]的存儲地址為多少?若按列優先存儲,則元素a[45][68]的存儲地址為多少?

按列優先存儲

元素a[45][68]前面有1~67列,每列50個元素,計67×50個元素。

在第68列中,元素a[45][68]前面有a[1..44][68]計44個元素,這樣元素a[45][68]前面存儲的元素個數=67×50 44。

LOC(a[45][68])=2000 (67×50 44)×2=8788。

特殊矩陣的壓縮存儲

數據結構中怎麼表示數組(數據結構串和數組)8

對稱矩陣的壓縮存儲

數據結構中怎麼表示數組(數據結構串和數組)9

數據結構中怎麼表示數組(數據結構串和數組)10

數據結構中怎麼表示數組(數據結構串和數組)11

三角矩陣的壓縮存儲

數據結構中怎麼表示數組(數據結構串和數組)12

數據結構中怎麼表示數組(數據結構串和數組)13

數據結構中怎麼表示數組(數據結構串和數組)14

數據結構中怎麼表示數組(數據結構串和數組)15

對角矩陣的壓縮存儲

數據結構中怎麼表示數組(數據結構串和數組)16

數據結構中怎麼表示數組(數據結構串和數組)17

稀疏矩陣

一個階數較大的矩陣中的非零元素個數s相對于矩陣元素的總個數t十分小時,即s<<t時,稱該矩陣為稀疏矩陣。

例如一個100×100的矩陣,若其中隻有100個非零元素,就可稱其為稀疏矩陣。

稀疏矩陣和特殊矩陣的不同點:

特殊矩陣的特殊元素(相同元素、常量元素)分布有規律。

稀疏矩陣的特殊元素(非0元素)分布沒有規律。

稀疏矩陣的三元組表示

數據結構中怎麼表示數組(數據結構串和數組)18

三元組表示中每個元素的類定義如下:

數據結構中怎麼表示數組(數據結構串和數組)19

設計稀疏矩陣三元組存儲結構類TupClass如下:

數據結構中怎麼表示數組(數據結構串和數組)20

TupClass類中包含如下基本運算方法:

其中,data列表用于存放稀疏矩陣中所有非零元素,通常按行優先順序排列。這種有序結構可簡化大多數稀疏矩陣運算算法。

數據結構中怎麼表示數組(數據結構串和數組)21

稀疏矩陣的十字鍊表表示

每個非零元素對應一個結點

數據結構中怎麼表示數組(數據結構串和數組)22

每行的所有結點鍊起來構成一個帶行頭結點的循環單鍊表。以h[i](0≤i≤m-1)作為第i行的頭結點。

數據結構中怎麼表示數組(數據結構串和數組)23

每列的所有結點鍊起來構成一個帶列頭結點的循環單鍊表。 以h[i](0≤i≤m-1)作為第i列的頭結點。

數據結構中怎麼表示數組(數據結構串和數組)24

行、列頭結點可以共享

數據結構中怎麼表示數組(數據結構串和數組)25

增加一個總頭結點,并把所有行、列頭結點鍊起來構成一個循環單鍊表

數據結構中怎麼表示數組(數據結構串和數組)26

為了統一,設計結點類型如下:

數據結構中怎麼表示數組(數據結構串和數組)27

數據結構中怎麼表示數組(數據結構串和數組)28

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
汽車esp有哪些作用
汽車esp有哪些作用
由于受到售價、品牌、車型定位等諸多因素的影響,各車型的配置會有所不同。一些中高端車型往往會配備EPS系統。不少消費者的在購車的時候将有無ESP系統作為自己選車的重要标準之一。到底,這一系統有何過人之處?消費者這樣的追求有是否有現實意義呢?首...
2025-08-30
紐扣電池規格參數對比
紐扣電池規格參數對比
紐扣電池分為可充電和不可充電的二種電池,都是采用不鏽鋼電池作為外殼封裝。電池充電的包含3.6V可充锂離子電池扣式充電電池(LIR系列産品),3V可充锂離子電池扣式充電電池(ML或VL系列産品);不充電的包含3V锂錳扣式充電電池(CR系列産品...
2025-08-30
iota系統數據采集
iota系統數據采集
iota系統數據采集?1、數據采集傳輸終端(1)一體式結構,功能包含數據的采集、上發、現場顯示屏、操作按鍵、充電放電接口、通訊接口;,今天小編就來說說關于iota系統數據采集?下面更多詳細答案一起來看看吧!iota系統數據采集1、數據采集傳...
2025-08-30
華為手機相機不能打開咋辦
華為手機相機不能打開咋辦
1.由于Android系統架構要求同時隻能有一個對應用打開攝像頭,另外一個應用打開前其他應用必須先關閉攝像頭。可能是手機中某些第三方應用沒有按照android要求處理,打開了相機相關的應用後沒有關閉,如手電筒,二維碼掃描等程序,可以将相機相...
2025-08-30
蘋果手機a14和a15處理器哪一個好
蘋果手機a14和a15處理器哪一個好
我們知道iphone14手機這一次使用的并非是最新的A16處理器,而是2021年發布的A15老款處理器。這一款老款的處理器确實你可以看到它本身所擁有的性能表現。我們其實能夠通過對比A15處理器和骁龍8+處理器,來進行對比,就能夠知道兩款處理...
2025-08-30
Copyright 2023-2025 - www.tftnews.com All Rights Reserved