資料結構與演算法導論2 線性表

2021-08-16 15:03:16 字數 1119 閱讀 9576

#define maxsize 20

typedef

int elemtype

typedef

struct

sqlist;

總結下,順序儲存結構封裝需要三個屬性:

儲存空間的起始位置,陣列data,它的儲存位置就是線性表儲存空間的儲存位置。

線性表的最大儲存容量:陣列的長度maxsize。

線性表的當前長度:length。

注意,陣列的長度與線性表的當前長度需要區分一下:陣列的長度是存放線性表的儲存空間的總長度,一般初始化後不變。而線性表的當前長度是線性表中元素的個數,是會變化的。

線性表的順序儲存結構,在存、讀資料時,不管是哪個位置,時間複雜度都是o(1)。而在插入或刪除時,時間複雜度都是o(n)。

這就說明,它比較適合元素個數比較穩定,不經常插入和刪除元素,而更多的操作是訪問資料的應用。

優點:

無須為表示表中元素之間的邏輯關係而增加額外的儲存空間。

可以快速地訪問表中任意位置的元素。

缺點:

插入和刪除操作需要移動大量元素。

當線性表長度變化較大時,難以確定儲存空間的容量。

容易造成儲存空間的「碎片」。

儲存資料元素資訊的域稱為資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱為指標或鏈。這兩部分資訊組成資料元素稱為儲存映像,稱為結點(node)。

對於線性表來說,總得有個頭有個尾,鍊錶也不例外。我們把鍊錶中的第乙個結點的儲存位置叫做頭指標,最後乙個結點指標為空(null)。頭結點的資料域一般不儲存任何資訊。

我們希望從第i個位置開始,插入連續10個元素,對於順序儲存結構意味著,每一次插入都需要移動n-i個位置,所以每次都是o(n)。

而單鏈表,我們只需要在第一次時,找到第i個位置的指標,此時為o(n),接下來只是簡單地通過賦值移動指標而已,時間複雜度都是o(1)。

顯然,對於插入或刪除資料越頻繁的操作,單鏈表的效率優勢就越是明顯啦~

資料結構導論 線性表

線性表是最基本 最簡單 也是最常用的一種資料結構。在資料結構邏輯層次上細分,線性表可分為一般線性表和受限線性表。一般線性表也就是我們通常所說的 線性表 可以自由的刪除或新增結點。受限線性表主要包括棧和佇列,受限表示對結點的操作受限制。在實際應用中,線性表都是以棧 佇列 字串 陣列等特殊線性表的形式來...

資料結構 線性表 2

package com.wjy.data structure.linearlist.common public inte ce nodepackage com.wjy.data structure.linearlist.common 單鏈表結點定義 public class slnode imple...

資料結構2 線性表

什麼是線性表 邏輯上具有線性結構的儲存結構 線性表的特點 線性表中每個元素型別相同 線性表分類 根據物理結構,分為順序儲存和鏈式儲存 順序儲存 順序表 順序表的特點 快速隨機訪問,查詢和修改效率高,增刪效率低 順序表的實現 1 定義順序表頭,2 順序表初始化,3 實現順序表的操作 順序表的操作 增加...