資料結構筆記2 線性表之順序表

2021-09-08 23:31:34 字數 2246 閱讀 4849

線性表(linear list)是由n(n≥0)個資料元素(結點)a1,a2,…,an組成的有限序列。
容量固定訪問速度快
線性表的順序儲存結構在c#中最直接表現形式就是陣列。陣列是最基礎也是訪問速度最快的一種集合型別。在託管堆中建立陣列時,除了陣列元素,陣列物件所占用的記憶體塊還包括型別物件指標、同步索引等額外成員!陣列雖然有很多優點,但是它無法進行新增和刪除,也無法動態的更改集合的大小,如果要動態的改變陣列所占用的空間的大小,可以使用c#中的arraylist。動態陣列。
插入:

通常將增加的內容加在順序表的最後乙個,但是如果要求按順序插入時則應該先查詢應該插入的位置

在將該位置以後的順序表的所有內容均向後移動,再將需要插入的內容插入相應位置。要注意的問題是:(1)順序表中資料區域有maxlen個儲存單元,所以在插入時先檢查順序表是否已滿,在表滿的情況下不能再做插入,否則產生溢位錯誤。

(2)檢驗插入位置的有效性,這裡 i 的有效範圍是:1<=i<=n+1,其中 n 為原表長。

(3)注意資料的移動方向,必須從原線性表最後乙個結點(an)起往後移動。順序表插入操作需移動表中一半資料元素,其時間複雜度為o(n)。

刪除:

先查詢應該刪除內容的位置,在將該位置以後的順序表的所有內容均向前移動,需要刪除的內容就自動被刪除了請注意以下問題:(1)首先要檢查刪除位置的有效性,刪除第i個元素,i的取值為: 1<=i<=n。

(2)當表空時不能做刪除,因表空時 l->last的值為-1,條件(i<1 || i>l->last+1)也包括了對錶空的檢查。

(3)刪除 ai 之後,該資料則已不存在,如果需要,必須先取出 ai 後,再將其刪除。

順序儲存的優點:
• 可以隨機訪問表中任意乙個元素;

• 儲存位置可以用公式:b+(i-1)*d 計算;

• 節約儲存空間。

順序儲存的缺點:

• 對順序表作插入、刪除時需要通過移動大量的資料元素,影響了執行效率。

• 線性表預先分配空間時,必須按最大空間分配,儲存空間得不到充分的利用。

• 表的容量難以擴充(對有些高階語言而言)。

c#中的arraylist酒是動態地改變陣列大小的。arraylist又成為動態陣列,他的儲存空間可以被動態的改變,同時還有新增、刪除元素的功能。
以下是模擬arraylist的部分核心**實現:

using system;

namespace datastructure

public daparraylist(int capacity)

_items = new

object[capacity];

}public

virtual

int add(object

value)

public

void ensurecapacity(int min)

if (this._size == this._items.length)

if (index _size)

this._size--;

if (index

/// 裁減空間

///

public

virtual

void trimtosize()

///

/// 元素個數

///

public

virtual

int count

}public

virtual

object

this[int index]

return _items[index];

}set

_items[index] = value;}}

public

virtual

int capacity

setif (value>0)

this._items = destinationarray;

}else}}

}}}

資料結構筆記2 線性表之順序表

線性表 linear list 是由n n 0 個資料元素 結點 a1,a2,an組成的有限序列。容量固定 訪問速度快 線性表的順序儲存結構在c 中最直接表現形式就是陣列。陣列是最基礎也是訪問速度最快的一種集合型別。在託管堆中建立陣列時,除了陣列元素,陣列物件所占用的記憶體塊還包括型別物件指標 同步...

資料結構線性表之順序表

純手打順序表相關操作,包括順序表的建立 初始化 輸出 插入 刪除 銷毀等,僅供自己回顧使用,可能會有不對的或者不恰當的地方望大家指正,共同學習。如下 資料結構順序表 include include include define maxsize 100 using namespace std type...

資料結構 線性表之順序表

線性表是包含若干資料元素的乙個線性序列 記為 l a0,ai 1,ai,ai 1 an 1 l為表名,ai 0 i n 1 為資料元素 n為表長,n 0 時,線性表l為非空表,否則為空表。線性表l可用二元組形式描述 l d,r 即線性表l包含資料元素集合d和關係集合r d r 關係符在這裡稱為有序對...