陣列和順序表的區別是什麼?

時間 2021-05-13 07:06:13

1樓:明教程式設計師

這麼理解吧,陣列是記憶體連續的(物理結構) 是維度較窄的層面

順序表是乙個維度比較大的層面,順序表可以用陣列實現,也可以用鍊錶實現(記憶體不連續)。

2樓:喬喬-縮頭者

借鑑了以前兩位答主的回答[1]

[2],維基百科,加上這篇博文[3],給出以下總結,應該比較符合絕大多數人的用詞習慣,並會一併給出英文對應的詞彙。

首先,要區分邏輯結構和物理結構的概念。但注意,因為語言本身有靈活性,所以有時候乙個名詞可能既代表一種邏輯結構,也代表一種物理結構,比如樹(下文有詳解)。

邏輯結構(abstract data type[4])指從邏輯上元素之間是怎樣組織的,比如線性表(list/sequemce[4],元素之間只有線性的關係)、樹(tree[5], 乙個元素有向地和他的父親和兒子有關係,同時也可以表示一種物理結構,見下)、圖(graph,乙個元素和若干元素有向或無向地有關係)。(這裡也能看出來樹就是一種圖而已)。

物理結構(concrete data structure[6])指物理上元素如何組織和管理。比如陣列(array[7],元素在記憶體中乙個挨乙個)、鍊錶(linked list[8],乙個元素有指向下乙個元素的指標)、(tree[5],乙個元素有指向它孩子們的指標)。

這裡需要注意一點,陣列(物理結構)並不是只能實現線性表,它還可以實現樹、圖等等。

PS:陣列其實也可以表示一種邏輯結構[11],表示可以用執行時計算出來的下標來索引元素的集合。比如我們在excel中輸入一組數,我們可以叫它陣列,但你不會去想它在記憶體中是怎麼存的。

3樓:wzy

我認為先梳理好概念很重要

線性表(資料結構):一種邏輯結構

順序表(資料結構):線性表的順序儲存實現

陣列(資料結構):一種邏輯結構,線性表的拓展,一維陣列可以視為乙個線性表

陣列(資料型別):一提到陣列想到的可能會是這個概念,甚至是高階程式語言中的這種資料型別

因此,一維陣列的順序儲存結構和順序表很相似,但是一維陣列除結構的初始化和銷毀外只有訪問和修改元素的操作

4樓:windliang

每個地方也說的不一樣,但有時候只要理解了對方意思就行了,說一下我的理解。

陣列是用一段連續的記憶體儲存,可以隨機訪問。

鍊錶不要求連續的記憶體。

線性表這些邏輯層的概念,底層既可以用陣列實現,也可以用鍊錶實現。

線性表用陣列實現叫做順序表,用鍊錶實現沒有特殊的名字。

樹用陣列實現沒有特殊的名字,用鍊錶實現沒有特殊的名字。

等等,好像也只有線性表那裡有點特殊。

然後從這個角度來看,線性表,棧都是更高層的資料結構,而陣列,鍊錶就可以看做底層基礎的資料結構。

所以一會兒把陣列叫做這個,又叫做那個,理解就好,我也沒找到明確的定義。

string和char陣列的區別是什麼以及map可否設定key為char陣列?

yc znone 可以用字元陣列做key,不過要提供相應的less運算。只有在所有key的長度都相同時,才應該考慮用過字元陣列。推薦用std array代替char N Pluto Hades 一般盡量都用string,如果某些特殊需要非要用char 做map,也是可以的,自己寫比較函式。下面是直接...

剖腹產和順產的區別是什麼,剖了後悔嗎?

我乙個十二周的孕婦,本來堅定不移的覺得順產好,看完不敢順了,太可怕了。沒想到,原來順產有這麼多不可預估的風險,誰知道自己生產的時候會不會隨機到哪種特殊情況呢。看了幾條生產過程的答案,真的看哭了,當媽媽好不容易呢。 小苗 如無意外,那肯定首推順產,不管從孕婦還是小孩的角度來說,順產對大人 小孩都好,順...

和 的區別是什麼?

涼舟 哪一位 誰 彼女 她是哪一位 彼女 誰 她是誰誰 就不清楚是什麼人了 這個人是未知 性別也是未知 彼女有指向性 大概知道這個人 所以這個成分就不成立。 一墨君 我們可以稱它們為萬能指代詞,因為 家族的指代詞既可以指代人又可以指代物體還可以指代地點,而且非常禮貌。而 則只有誰的意思,是 的禮貌用...