2乘2陣列第一維 資料結構學習(2) 陣列

2021-10-13 18:25:28 字數 1746 閱讀 5632

陣列是資料呈線性排列的一種資料結構。與前一節中的鍊錶不同,在陣列中,訪問資料十分 簡單,而新增和刪除資料比較耗工夫。例如:

1. a 是陣列的名字,後面「[ ]」中的數字表示該數 據是陣列中的第幾個資料(這個數字叫作「數 組下標」,下標從 0 開始計數)。比如,red 就 是陣列 a 的第 2 個資料。

這就是陣列的概念圖。blue、yellow、red作為資料儲存在陣列中。

2. 資料按順序儲存在記憶體的連續空間內

3. 由於資料是儲存在連續空間內的,所以每個數 據的記憶體位址(在記憶體上的位置)都可以通過 陣列下標算出,我們也就可以藉此直接訪問目 標資料(這叫作「隨機訪問」)。

4. 比如現在我們想要訪問red。如果使用指標就只能從頭開始查詢,但在陣列中,只需要指定 a[2],便能直接訪問red。

5. 但是,如果想在任意位置上新增或者刪除數 據,陣列的操作就要比鍊錶複雜多了。這裡我 們嘗試將green新增到第2個位置上。

6. 首先,在陣列的末尾確保需要增加的儲存空間。

7. 為了給新資料騰出位置,要把已有資料乙個個 移開。首先把red往後移。

8. 然後把yellow往後移。

9. 最後在空出來的位置上寫入green。

10. 這樣新增資料的操作就完成了。

11. 反過來,如果想要刪除green……

12. 首先,刪掉目標資料(在這裡指green)。

13. 然後把後面的資料乙個個往空位移。先把 yellow往前移。

14. 接下來移動red

15. 最後再刪掉多餘的空間。這樣一來green便被刪掉了。

這裡講解一下對陣列操作所花費的執行時間。

假設陣列中有n 個資料,由於訪問數 據時使用的是隨機訪問(通過下標可計算出記憶體位址),所以需要的執行時間僅為恆定的 o(1)。

但另一方面,想要向陣列中新增新資料時,必須把目標位置後面的資料乙個個移 開。所以,如果在陣列頭部新增資料,就需要 o(n) 的時間。刪除操作同理。

在鍊錶和陣列中,資料都是線性地排成一列。

我們可以根據哪種操作較為頻繁來決定使用哪種資料結構。

《資料結構》學習筆記(2)

類的定義體現了抽象資料型別的思想,可以用以支援說明與實現的分離,將抽象資料型別的實現封裝在類的內部,使達到資訊隱蔽的目標。include using namespace std class point ostream point operator ostream strm,point p 或poin...

資料結構學習筆記2

資料結構 第二章 chapter 1線性表線性儲存 引入 線性結構的定義 若結構是非空有限集,則有且僅有乙個開始結點和乙個終端結點,並且所有結點都最多只有乙個直接前趨和乙個直接後繼。可表示為 a1 a2 an 線性結構表示式 a1 a2 an 線性結構的特點 只有乙個首結點和尾結點 除首尾結點外,其...

資料結構學習筆記2

演算法和演算法分析 演算法 是為了解決某類問題而規定的乙個有限長的操作序列 演算法具有的五個特性 有窮性 有限步驟,有限時間 確定性 不產生二義性 可行性 基本操作運算執行有限次來實現 輸入 有零個或者多個輸入 輸出 有乙個或者多個輸出 評價演算法優劣的基本準則 正確性,可讀性 易於理解,相互交流 ...