1. 程式人生 > >“設圖紙”的資料結構和演算法 (二)線性表

“設圖紙”的資料結構和演算法 (二)線性表

  • 線性表的定義:由零個或多個數據元素組成的有限序列(n=0時為空表)

注意:線性關係的條件是如果存在多個元素,則“第一個元素無前驅,而最後一個元素無後繼,其他元素都有且僅有一個前驅和後繼”

  • 資料型別:是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱
  • 線性表有兩種物理儲存結構:順序儲存結構和鏈式儲存結構
  • 順序儲存結構:用一段地址連續的儲存單元依次儲存線性表的儲存元素
  • 順序儲存結構封裝需要三個屬性
    1. 儲存空間的起始位置,陣列data,它的儲存位置就是線性表儲存空間的儲存位置
    2. 線性表的最大儲存容量:陣列的長度MaxSize
    3. 線性表的當前長度:length
  • 線性表的順序儲存結構,在存、讀資料時,不管是哪個位置,時間複雜度都是O(1)。而在插入或刪除時,時間複雜度都是O(n)。這就說明,它比較適合元素個數比較穩定,不經常插入和刪除元素,而更多的操作是存取資料的應用。
  • 順序儲存結構的優缺點
    1. 優點:無需為表中元素之間的邏輯關係而增加額外的儲存空間,可以快速的存取表中的任意位置的元素
    2. 缺點:插入和刪除操作需要移動大量元素,當線性表長度變化較大時,難以確定儲存空間的容量。易造成儲存空間的“碎片”。
  • 線性表的鏈式儲存結構
    1. 鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素,這組儲存單元可以存在記憶體中未被佔用的任意位置。
    2. 比起順序儲存結構,在鏈式儲存結構中,除了要儲存資料元素資訊外,還要儲存它的後繼元素的儲存地址(指標)
    3. 我們把儲存資料元素資訊的域稱為資料域,把儲存指向後繼位置的指標資訊的域稱為指標域。指標域中儲存的資訊稱為指標或鏈。這兩部分組成資料元素稱為儲存映像,稱為結點。
    4. 連結串列中的每個結點中只包含一個指標域,所以叫做單鏈表。
  • 頭指標
    1. 頭指標是指連結串列指向第一個結點的指標,若連結串列有頭結點,則是指向頭結點的指標
    2. 頭指標具有標識作用,所以常用頭指標冠以連結串列的名字(指標變數的名字)
    3. 無論連結串列是否為空,頭指標均不為空
    4. 頭指標是連結串列的必要元素
  • 頭結點
    1. 頭結點是為了操作的統一和方便而設立的,放在第一個元素的結點之前,其資料域一般無意義(但也可以用來存放連結串列的長度)
    2. 有了頭結點,對在第一元素結點前插入結點和刪除第一結點起操作與其他結點的操作就統一了
    3. 頭結點不一定是連結串列的必要元素