從本質上講,陣列與順序表、鍊錶、棧和佇列一樣,都用來儲存具有 「一對一」 邏輯關係資料的線性儲存結構。只因各程式語言都預設將陣列作為基本資料型別,使初學者對陣列有了 「只是基本資料型別,不是儲存結構」 的誤解。
不僅如此,陣列和其他線性儲存結構不同,順序表、鍊錶、棧和佇列儲存的都是不可再分的資料元素(如數字 5、字元 『a』 等),而陣列既可以用來儲存不可再分的資料元素,也可以用來儲存像順序表、鍊錶這樣的資料結構。
比如說,陣列可以直接儲存多個順序表。我們知道,順序表的底層實現還是陣列,因此等價於陣列中繼續儲存陣列。這與平時使用的二維陣列類似。
根據陣列中儲存資料之間邏輯結構的不同,陣列可細分為一維陣列、二維陣列、…、n 維陣列:
陣列一旦被定義,它的維度和維界就不在改變,除了銷毀和初始化之外。
陣列只有訪問元素和修改元素值的操作,因此採用順序儲存結構來儲存陣列。
陣列儲存的核心問題是:陣列元素多維結構到一維記憶體空間的對映
由於陣列可以是多維的,而順序儲存結構是一維的,因此陣列中資料的儲存要制定乙個先後次序。通常,陣列中資料的儲存有兩種先後儲存方式:
2.1.1、以列序為主(先列後行):按照行號從小到大的順序,依次儲存每一列的元素
2.1.2、以行序為主(先行後列):按照列號從小到大的順序,依次儲存每一行的元素。
當需要在順序儲存的多維陣列中查詢某個指定元素時,需知道以下資訊:
多維陣列的儲存方式;
多維陣列在記憶體中存放的起始位址;
該指定元素在原多維陣列的座標(比如說,二維陣列中是通過行標和列標來表明資料元素的具體位置的);
陣列中陣列的具體型別,即陣列中單個資料元素所佔記憶體的大小,通常用字母 l 表示;
2. 2.1、二維陣列查詢指定元素
2.2.2、n維陣列查詢指定元素
資料結構(十五)
每組測試第1行包含2個正整數n和 m 1 000 分別是插入元素的個數 以及需要列印的路徑條數。下一行給出區間 10000,10000 內的 n個要被插入乙個初始為空的小頂堆的整數。最後一行給出 m個下標。對輸入中給出的每個下標i,在一行中輸出從h i 到根結點的路徑上的資料。數字間以1個空格分隔,...
資料結構 樹狀陣列筆記
樹狀陣列 binary indexed tree,bit c i 存放的是在i號之前 包括i號 lowbit i 個整數的和 即 c i 的覆蓋長度是lowbit i 樹狀陣列的下標必須從1開始 int getsum int x void update int x,int v 經典應用 統計序列中在...
資料結構之陣列 筆記
原文 應用最廣泛的一種資料結構,常常被植入到程式語言中,作為基本資料型別使用,因此,在一些教材中,陣列並沒有被當做一種資料結構單獨拿出來講解 其實陣列就是一段連續的記憶體,即使在物理記憶體中不是連續的,在邏輯上肯定是連續的 其實沒必要在概念上做糾纏,陣列可以當做學習資料結構的敲門磚,以此為基礎,了解...