資料結構與演算法03

bigpengry發表於2019-01-27

線性表

線性表就是儲存相同資料元素的有限序列。這個關係是邏輯上的關係,而非物理上的關係。例如下面幾個資料結構,都是屬於線性表。在邏輯上,它們是緊密連線的,一個元素挨著一個元素,除了第一個和最後一個資料元素之外,其它資料元素都是首尾相接的。只要符合這種關係,那它就是線性表

資料結構與演算法03

陣列

陣列是線性表的順序儲存,它的主要特點是在邏輯上相鄰的元素,在實際的實體記憶體中也是相鄰的。 所以利用這一特性我們可以很方便的進行資料的快速存取。在建立陣列時,系統會記錄下陣列首地址的指標和陣列的資料型別,這樣當我們利用陣列下標訪問陣列元素時,系統就會用首地址的下標加上資料型別的大小*下標。

a[i]_address = base_address + i * data_type_size
複製程式碼

這樣的特性造成了陣列的高效訪低效的插入和刪除。陣列中如果想要插入一個元素,你就需要把想要插入位置後的元素依次往後移一位,這對效能是極大地損失。

連結串列

連結串列是線性表的鏈式儲存,它的主要特點是在邏輯上相鄰的元素,在實際的實體記憶體中可以是相鄰或者不相鄰的。 由於在物理位置上的不確定性,所以連結串列在查詢時會耗費大量時間。一個標準的連結串列元素必須要有一個存放資料的資料域,和一個指向下個連結串列元素的指標域,所以利用這一特性我們可以很方便的進行資料的快速刪除或增加。當你需要增加一個新的連結串列元素時,你只需要把當前連結串列元素中的指標域賦值給將要新增進來的連結串列元素的指標域,然後再將當前連結串列元素的指標域指向新增進來的連結串列元素。

資料結構與演算法03

相關文章