第五章,陣列和廣義表(廣義表放入後面章節)
5.1陣列的型別定義
陣列沒有插入刪除操作
5.2陣列的順序表示和實現
型別特點:
1)只有引用型操作,沒有加工型操作;(沒有鏈式表示)
2)陣列是多維的結構,而儲存空間是乙個一維的結構。
有兩種順序映象的方式:
1)以行序為主序(低下標優先);
二維陣列a中任一元素aij的儲存位置:
loc[i,j]=loc[0,0]+(b2*i+j)l(每行有b2個元素,l為每個元素所佔位置)
推廣到一般情況,n維陣列資料元素儲存位置
2)以列序為主序(高下標優先);
5.3稀疏矩陣的壓縮儲存
假設m行n列的矩陣含t個非零元素,則稱δ=t/(m*n)為稀疏因子,通常認為δ<=0.05的矩陣為稀疏矩陣。
以常規方法,即以二維陣列表示高階的稀疏矩陣時產生的問題:
1)零值元素佔的空間很大;
2)計算中進行了很多和零值的運算;
解決問題的原則:
1)盡可能少存或不存零值元素;
2)盡可能減少沒有實際意義的運算;
3)運算方便;即:能盡可能快地找到與下標值(i,j)對應的元素;能盡可能快地找到同一行或同一列的非零值元。
1,特殊矩陣的壓縮儲存如:三角矩陣,對角矩陣
2,隨機稀疏矩陣的壓縮儲存(隨機矩陣中的非零元分布不規則)以下為其三中表示方法
一,三元組順序表
二,行邏輯聯接的順序表
相乘演算法的時間複雜度相當於o(m*p)
三,十字鍊錶
5.4廣義表的結構特點:
1,廣義表中的資料元素有相對次序;
2,廣義表的長度定義為最外層包含元素個數;
3,廣義表的深度定義為所含括弧的重數;(「原子」的深度為0,空表的深度為1)
4,廣義表可以共享;
5,廣義表可以是乙個遞迴的表;
遞迴表的深度是無窮值,長度是有限值。
6,任何乙個非空廣義表均可分解為表頭,表尾兩部分,表頭可能
是原子也可能是廣義表,表尾
一定是廣義表
5.5廣義表的表示方法
頭,尾指標的鍊錶結構:表結點,原子結點
廣義表儲存結構的兩種分析方法:一,為分為表頭和表尾然後逐次遞迴,二,為分為各個子表
嚴蔚敏 資料結構學習筆記1
要點 1.名詞術語的含義 2.演算法五個要素的確切含義 3.計算語句頻度和估算演算法時間複雜度的方法 演算法的五大要素 1.有窮性 有時間限制,不能無窮執行 2.確定性 每種情況都有演算法對應 規則確定 3.可行性 所有操作足夠基本,可通過有限次數實現 4.輸入 有輸入,作為演算法加工物件的量值 5...
嚴蔚敏資料結構學習筆記一 緒論
第一章 緒論 1.1資料結構討論的範疇 演算法 怎麼處理問題 資料結構 問題的數學模型 1.2基本概念 一,資料與資料結構 資料 符號的集合 資料元素 資料中的元素 資料項 資料元素是資料項的集合,資料結構中討論的最小單位 資料結構 帶結構的資料元素的集合 資料結構形式定義 資料元素,資料元素上的關...
嚴蔚敏版資料結構學習筆記(3) 棧
棧是只能在表尾進行插入和刪除的一種簡單一點的線性表。表尾端是棧頂 top 表頭端是棧底 bottom 不含元素的稱為空棧。因為我們只能對棧頂的元素進行插入和刪除操作,所以棧這個資料結構就是乙個很有 原則 的結構,棧的修改是按照後進先出的原則進行的,也就是lifo last in first on 可...