国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

4.2數(shù)組

數(shù)組:按一定格式排列起來的,具有相同類型的數(shù)據(jù)元素的集合。

**一維數(shù)組:**若線性表中的數(shù)據(jù)元素為非結(jié)果的簡單元素,則稱為一維數(shù)組。

**一維數(shù)組的邏輯結(jié)構(gòu):**線性結(jié)構(gòu),定長的線性表。

**聲明格式:**數(shù)據(jù)類型 變量名稱 [長度] ;

例如:int num[5] = {0,1,2,3,4};

**二維數(shù)組:**若一維數(shù)組中的數(shù)據(jù)元素又是一維數(shù)組結(jié)構(gòu),則稱為二維數(shù)組。

二維數(shù)組的邏輯結(jié)構(gòu):

  1. 非線性結(jié)構(gòu):每一個數(shù)據(jù)元素既在一個行表中,又在一個列表中。
  2. 線性結(jié)構(gòu)定長的線性表:該線性表的每個數(shù)據(jù)元素也是一個定長的線性表。

**聲明格式:**數(shù)據(jù)類型 變量名稱 [行數(shù)] [列數(shù)];

例如:int num [5] [8];

在C語言中,一個二維數(shù)組類型也可以定義為一維數(shù)組類型(其分量類型為一維數(shù)組類型),即:

  typedef int array2[m][n];
等價于:
  typedef int array1[n];
  typedef array1 array2[m];

**三維數(shù)組:**若二維數(shù)組中的元素又是一個一維數(shù)組,則稱作三維數(shù)組。

**n維數(shù)組:**若 n - 1 維數(shù)組中的元素又是一個一維數(shù)組結(jié)構(gòu),則稱作 n 維數(shù)組。

**結(jié)論:**線性表結(jié)構(gòu)是數(shù)組結(jié)構(gòu)的一個特例,而數(shù)組結(jié)構(gòu)又是線性表結(jié)構(gòu)的擴展。

**數(shù)組特點:**結(jié)構(gòu)固定——定義后,維數(shù)和維界不再改變。

**數(shù)組基本操作:**除了結(jié)構(gòu)的初始化和銷毀之外,只有取元素和修改元素值的操作。

4.2.1數(shù)組的順序存儲結(jié)構(gòu)

數(shù)組特點:結(jié)構(gòu)固定——維數(shù)和維界不變。

一般都是采用順序存儲結(jié)構(gòu)來表示數(shù)組。

**注意:**數(shù)組可以是多維的,但存儲數(shù)據(jù)元素的內(nèi)存單元地址是一維的,因此,在存儲數(shù)組結(jié)構(gòu)之前,需要解決將多維關(guān)系映射到一維關(guān)系的問題。

一維數(shù)組:

例:有數(shù)組定義:int a[5]

每個元素占用4字節(jié),假設(shè)a[0]存儲在2000單元,a[3]地址是多少?

LOC(0) = a = 2000 L=4

LOC(3) = 3*4+2000

LOC(i) = i*L + 首地址

存儲單元是一維結(jié)構(gòu),而數(shù)組是個多維結(jié)構(gòu),則用一組連續(xù)存儲單元存放數(shù)組的數(shù)據(jù)元素就有個次序約定問題。

二維數(shù)組可有兩種存儲方式:

  1. 以行序為主序;

    設(shè)數(shù)組開始存儲位置LOC(0,0),存儲每個元素需要L個存儲單元

    數(shù)組元素a[i] [j]的存儲位置是:LOC(i,j)=LOC(0,0) + (n * i + j) * L

  2. 以列序為主序。

**三維數(shù)組:**按頁/行/列存放,頁優(yōu)先的順序存儲。

4.2.2特殊矩陣的壓縮存儲

**矩陣:**一個由 m*n 個元素排成的 m 行 n 列的表。

**矩陣的常規(guī)存儲:**將矩陣描述為一個二維數(shù)組。

矩陣的常規(guī)存儲的特點:

  1. 可以對其元素進行隨機存取。
  2. 矩陣運算非常簡單;存儲的密度為1.

**不適宜常規(guī)存儲的矩陣:**值相同的元素很多且呈某種規(guī)律分布;零元素多。

**矩陣的壓縮存儲:**為多個相同的非零元素只分配一個存儲空間;對零元素不分配空間。

數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

1、什么是壓縮存儲

若多個數(shù)據(jù)元素的值都相同,則只分配一個元素值的存儲空間,且零元素不占存儲空間。

2、什么樣的矩陣能夠壓縮?

一些特殊矩陣,如:對稱矩陣,對角矩陣,三角矩陣,稀疏矩陣等。

3、什么叫稀疏矩陣?

矩陣中非零元素的個數(shù)較少(一般小于5%)

1.對稱矩陣

數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

**【特點】:**在 n*n 的矩陣 a 中,滿足如下性質(zhì):aij=aji(1≤i , j≤n)

**【存儲方法】:**只存儲下(或者上)三角(包括主對角線)的數(shù)據(jù)元素。共占用 n(n+1)/2個元素空間。

**【存儲結(jié)構(gòu)】:**對稱矩陣上下三角中的元素數(shù)均為:n(n+1)/2

? 可以以行序為主序?qū)⒃卮娣旁谝粋€一維數(shù)組 sa[ n(n+1)/2 ]中。

2.三角矩陣

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6FofxLkg-1690537372616)(https://tse1-mm.cn.bing.net/th?id=OIF-C.uHr%2bn0jNJ2j8NRD2iircPA&pid=ImgDet&rs=1)]

**【特點】:**對角線以下(或者以上)的數(shù)據(jù)元素(不包括對角線)全部為常數(shù)c。

**【存儲方法】:**重復(fù)元素c共享一個元素存儲空間,共占用n(n+1)/2+1個元素空間:[1…n(n+1)/2+1]

上三角矩陣:

數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

下三角矩陣:

數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

3.對角矩陣(帶狀矩陣)

數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

**【特點】:**在n*n的方陣中,所有非零元素都集中在以主對角線為中心的帶狀區(qū)域中,區(qū)域外的值全為0,則稱為對角矩陣。常見的有三對角矩陣、五對角矩陣、七對角矩陣等。

數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

4.稀疏矩陣

**稀疏矩陣:**設(shè)在 m*n 的矩陣中有 t 個非零元素。

? 令 δ = t / (m*n)

? 當(dāng) δ ≤ 0.05 時稱為稀疏矩陣。

數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

**壓縮存儲原則:**存各非零元素的值,行列位置和矩陣的行列數(shù)。

4.1三元組順序表

數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

注意:為更可靠描述,通常再加一個“總體”信息:即總行數(shù)、總列數(shù)、非零元素總個數(shù)。

三元組順序表又稱有序的雙下標(biāo)法。

三元組順序表的優(yōu)點:非零元素在表中按行序有序存儲,因此便于進行依行順序處理的矩陣運算。

三元組順序表的缺點:不能隨機存取。若按行號存取某一行中的非零元素,則需從頭開始進行查找。

4.2十字鏈表
  • **優(yōu)點:**它能夠靈活地插入因運算而產(chǎn)生的新的非零元素,刪除因運算而產(chǎn)生的新的零元素,實現(xiàn)矩陣的各種運算。

  • 在十字鏈表中,矩陣的每一個非零元素用一個結(jié)點表示,該結(jié)點除了(row,col,value)以外,還要有兩個域:

    • right:用于鏈接同一行中的下一個非零元素。
    • down:用以鏈接同一列中的下一個非零元素。
  • 十字鏈表中結(jié)點的結(jié)構(gòu)示意圖:

    數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

    數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

4.3廣義表

4.3.1廣義表定義

廣義表(又稱列表Lists)是n≥0個元素 a0,a1,…,an-1的有限序列,其中每一個ai或者是原子,或者是一個廣義表。

例如:中國舉辦的國際足球邀請賽,參賽隊伍名單可表示如下:

(阿根廷,巴西,德國,法國,(),西班牙,意大利,英國,(國家隊,山東魯能,廣州恒大))

在這個表中,敘利亞隊?wèi)?yīng)排在法國隊的后面,但未能參加,成為空表。國家隊,山東魯隊,廣州恒大均作為東道主的參賽隊參加,構(gòu)成一個小的線性表,成為原線性表的一個數(shù)據(jù)元素。這種拓寬了的線性表就是廣義表。

  • 廣義表通常記作:LS=( a1,a2,…,an

  • 習(xí)慣上,一般用大寫字母表示廣義表小寫字母表示原子。

  • **表頭:**若LS非空(n≥1),則其第一個元素a1就是表頭。記作head(LS)=a1.

    注意:表頭可以是原子,也可以是子表。

  • 表尾除表頭之外的其他元素組成的表。記作tail(LS)=(a2,…,an)

    注意:表尾不是最后一個元素,而是一個子表。

    例如:(1) A=() 空表,長度為0

    ? (2)B=(( )) 長度為1,表頭、表尾均為()。

    ? (3)C=(a,(b,c)) 長度為2,由原子a和子表(b,c)構(gòu)成。表頭為a,表尾為((b,c))

    ? (4)D=(x,y,z) 長度為3,每一項都是原子。表頭為x,表尾為(y,z)

    ? (5)E=(C,D) 長度為2,每一項都是子表。表頭為C,表尾為(D)

    ? (6)F=(a,F) 長度為2,第一項為原子,第二項為它本身。表頭為a,表尾為(F)。F=(a,(a,(a,…)))

4.3.2廣義表的性質(zhì)
  1. 廣義表的數(shù)據(jù)元素有相對應(yīng)次序;一個直接前驅(qū)和一個直接后繼。

  2. 廣義表的長度定義為最外層所包括元素的個數(shù),如C=(a,(b,c))是長度為2的廣義表。

  3. 廣義表的深度定義為該廣義表展開后所含括號的重數(shù)。

    注意:“原子”的深度為0;“空表”的深度為1。

  4. 廣義表可以為其他廣義表共享:如:廣義表B就共享表A。在B中不必列出A的值,而是通過名稱來引用。B=(A)

  5. 廣義表可以是一個遞歸的表。

    注意:遞歸表的深度是無窮值,長度是有限值。

  6. 廣義表是一個多層次結(jié)構(gòu),廣義表的元素可以是單元數(shù),也可以是子表,而子表的元素還可以是子表。

    數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表,數(shù)據(jù)結(jié)構(gòu)考研,數(shù)據(jù)結(jié)構(gòu),java,算法

4.3.3廣義表和線性表的區(qū)別

廣義表可以看成是線性表的推廣,線性表是廣義表的特例

廣義表的結(jié)構(gòu)相當(dāng)靈活,在某種前提下,它可以兼容線性表、數(shù)組、數(shù)和有向圖等各種常見的數(shù)據(jù)結(jié)構(gòu)。

當(dāng)二維數(shù)組的每行(或每列)作為子表處理時,二維數(shù)組即為一個廣義表。

另外,數(shù)和有向圖也可以用廣義表來表示。

由于廣義表不僅集中了線性表,數(shù)組,數(shù)和有向圖等常見數(shù)據(jù)結(jié)構(gòu)的特點,而且可有效地利用存儲空間,因此在計算機的許多應(yīng)用領(lǐng)域都有成功使用廣義表的實例。文章來源地址http://www.zghlxwxcb.cn/news/detail-615983.html

4.3.4廣義表的基本運算
  1. 求表頭GetHead(L):非空廣義表的第一個元素,可以是一個單一元素,也可以是一個子表。
  2. 求表尾GetTail(L):非空廣義表除去表頭元素以外其他元素所構(gòu)成的表,表尾一定是一個表。

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表

    數(shù)據(jù)結(jié)構(gòu)—數(shù)組和廣義表

    4.2數(shù)組 數(shù)組: 按一定格式排列起來的,具有 相同類型 的數(shù)據(jù)元素的集合。 **一維數(shù)組:**若線性表中的數(shù)據(jù)元素為非結(jié)果的簡單元素,則稱為一維數(shù)組。 **一維數(shù)組的邏輯結(jié)構(gòu):**線性結(jié)構(gòu),定長的線性表。 **聲明格式:**數(shù)據(jù)類型 變量名稱 [長度] ; 例如:int num[5] = {0,1

    2024年02月15日
    瀏覽(20)
  • 數(shù)據(jù)結(jié)構(gòu)--串、數(shù)組、廣義表

    數(shù)據(jù)結(jié)構(gòu)--串、數(shù)組、廣義表

    也叫字符串 抽象類型定義 存儲結(jié)構(gòu)(順序表較為常用) 順序存儲結(jié)構(gòu) 為了方便一些操作,通常串的數(shù)組的第一個位置不放元素,而是從ch【1】開始存放元素 鏈?zhǔn)酱鎯Y(jié)構(gòu) 如果一個結(jié)點的數(shù)據(jù)域只放一個字符,那么會導(dǎo)致存儲密度異常的底,解決這個問題:在數(shù)據(jù)域放更多的

    2024年02月15日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)之串|數(shù)組|廣義表
  • 12-數(shù)據(jù)結(jié)構(gòu)-數(shù)組、矩陣、廣義表

    目錄 數(shù)組、矩陣、廣義表 ? 一、數(shù)組 ? ? ? ? 二.矩陣 三、廣義表 ????????這一章節(jié)理解基本概念即可。數(shù)組要看清其實下標(biāo)是多少,并且二維數(shù)組,存取數(shù)據(jù),要先看清楚是按照行存還是按列存,按行則是正常一行一行的去讀寫,按列則是,從左至右,一列一列的弄。

    2024年02月13日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組、矩陣和廣義表

    數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組、矩陣和廣義表

    ??數(shù)據(jù)結(jié)構(gòu)是程序設(shè)計的重要基礎(chǔ),它所討論的內(nèi)容和技術(shù)對從事軟件項目的開發(fā)有重要作用。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)要達到的目標(biāo)是學(xué)會從問題出發(fā),分析和研究計算機加工的數(shù)據(jù)的特性,以便為應(yīng)用所涉及的數(shù)據(jù)選擇適當(dāng)?shù)倪壿嫿Y(jié)構(gòu)、存儲結(jié)構(gòu)及其相應(yīng)的操作方法,為提高利用

    2024年01月22日
    瀏覽(23)
  • 【數(shù)據(jù)結(jié)構(gòu)】——多維數(shù)組、矩陣以及廣義表的相關(guān)習(xí)題

    1、數(shù)組通常具有的兩種基本操作是()。 A、查找和修改 B、查找和索引 C、索引和修改 D、建立和刪除 解析: (A) 基本操作是查找和修改,其中每個元素都可以通過其索引來訪問,這是從數(shù)組的第一個元素開始計算的。除了訪問和修改數(shù)組元素之外,還可以執(zhí)行其他一些操

    2024年02月04日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)--》數(shù)組和廣義表:從基礎(chǔ)到應(yīng)用的全面剖析

    數(shù)據(jù)結(jié)構(gòu)--》數(shù)組和廣義表:從基礎(chǔ)到應(yīng)用的全面剖析

    ????????數(shù)據(jù)結(jié)構(gòu)為我們提供了組織和處理數(shù)據(jù)的基本工具。而在這個廣袤的數(shù)據(jù)結(jié)構(gòu)領(lǐng)域中,數(shù)組和廣義表是兩個不可或缺的重要概念。它們作為線性結(jié)構(gòu)的代表,在算法與應(yīng)用中扮演著重要的角色。 ??????? 無論你是初學(xué)者還是進階者,本文將為你提供簡單易懂、

    2024年02月08日
    瀏覽(17)
  • 24考研數(shù)據(jù)結(jié)構(gòu)-數(shù)組和特殊矩陣

    24考研數(shù)據(jù)結(jié)構(gòu)-數(shù)組和特殊矩陣

    數(shù)據(jù)結(jié)構(gòu)是計算機科學(xué)中的基礎(chǔ)概念,它涉及組織和存儲數(shù)據(jù)的方式以及對數(shù)據(jù)的操作。在數(shù)據(jù)結(jié)構(gòu)中,數(shù)組和特殊矩陣是兩種常見的數(shù)據(jù)組織形式。本文將對數(shù)組和特殊矩陣進行介紹,并討論它們在實際應(yīng)用中的特點和用途。 數(shù)組是一種線性數(shù)據(jù)結(jié)構(gòu),它由相同類型的元素

    2024年02月14日
    瀏覽(17)
  • 【數(shù)據(jù)結(jié)構(gòu)】24王道考研筆記——棧、隊列和數(shù)組

    【數(shù)據(jù)結(jié)構(gòu)】24王道考研筆記——棧、隊列和數(shù)組

    基本概念 棧是 只允許在一端進行插入或刪除操作 的線性表。 棧頂:線性表允許進行插入刪除的那一端 棧底:固定的,不允許進行插入刪除的那一端 空棧:不含任何元素的空表 特點: 先進后出 基本操作: ??碱}型: [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片

    2024年02月09日
    瀏覽(50)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】1、學(xué)習(xí)動態(tài)數(shù)組數(shù)據(jù)結(jié)構(gòu)(基本模擬實現(xiàn) Java 的 ArrayList 實現(xiàn)增刪改查)

    【數(shù)據(jù)結(jié)構(gòu)與算法】1、學(xué)習(xí)動態(tài)數(shù)組數(shù)據(jù)結(jié)構(gòu)(基本模擬實現(xiàn) Java 的 ArrayList 實現(xiàn)增刪改查)

    ?? 數(shù)據(jù)結(jié)構(gòu)是 計算機 存儲 、 組織 數(shù)據(jù)的方式 ?? 線性 結(jié)構(gòu) 線性表(數(shù)組、鏈表、棧、隊列、哈希表) ?? 樹形 結(jié)構(gòu) 二叉樹 AVL 樹 紅黑樹 B 樹 堆 Trie 哈夫曼樹 并查集 ?? 圖形 結(jié)構(gòu) 鄰接矩陣 鄰接表 ?? 線性表是具有 n 個 相同類型元素 的有限 序列 (n = 0) a1 是首節(jié)點

    2024年02月10日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包