C 資料結構 順序表

2021-08-18 06:41:26 字數 2386 閱讀 2982

順序表,顧名思義儲存在計算機指定記憶體區域的一塊連續的儲存結構,跟我們一起排隊做廣播體操的那種方式

儲存物理結構:物理記憶體空間上是連續的

儲存邏輯關係:儲存值之間的關係為一對一

使用場景:一般訪問資料量比較大,新增和刪除操作不頻繁的資料

那麼我們這裡實現的語言是用的c#,對於線性表的一些特性我們這裡用陣列來操作這個實現和操作。這裡我們對線性表做一些操作:增、刪、改、查

首先我們來定義乙個順序表

class lineclass

}

接下來我們把建立資料儲存元素結構,這裡是迴圈插入線性表,時間空間複雜度為:o(n)

#region 儲存元素結構  o(n)

public void createline(string splits)

length = i;

}#endregion

然後我們把這個建立列印這個線性表的方法 ,時間空間複雜度為:o(n)

#region 將線性表的元素構成乙個字串返回  o(n)

public string displine()

return length > 0 ? strline.trimend(',') : "";

}#endregion

獲取這個順序表的長度。時間空間複雜度為:o(1)

#region 線性表的長度    o(1)

public int linelength()

#endregion

獲取第item個元素的值,時間空間複雜度為:o(1)

#region 獲取線性表第item項,元素值為e   o(1)

public bool getelem(int item, ref string e)

e = data[item - 1];

return true;

}#endregion

根據值獲取到item的位置,這裡值得注意的是,如果順序表裡存在兩個相同的值,到底獲取哪乙個呢,我們這裡是獲取從第乙個元素開始最近的乙個值,如果匹配,那麼返回。時間空間複雜度為:o(n)

#region 根據值獲取位置   o(n)

public int locateelem(string e)

#endregion

接下來就是新增乙個值,插入乙個值後面值的往後排乙個單位,記錄最新的順序表元素的數量。

注意:這裡分為三種情況,第一種從第乙個位置插入,那麼後面所有的元素往後移動乙個單位。這裡的時間空間複雜度為:o(n)

第二種從中間插入,跟第一種的情況差不多,從這個位置開始,後面的每一項元素往後移動乙個單位

第三種情況就是在順序表後面插入,這種情況就直接插入。這裡的時間複雜度為:o(1)

所有這裡分為最好的和最壞的情況

#region 插入,從item處插入e值 o(n)

public bool lineinsert(int item, string e)

for (int j = length; j > item; j--)

data[item - 1] = e;

length++;

return true;

}#endregion

最後就是刪除操作,跟新增差不多,只不過這裡是刪除,刪除後此節點後面的所有元素向前移動乙個單位,這裡的時間空間複雜度為:o(n)

#region 刪除  o(n)

public bool linedelete(int item, string e)

e = data[item];

for (int i = 0; i < length-1; i++)

length--;

return true;

}#endregion

結論:那麼到這裡呢順序表操作結束了,可以說順序表是結構最簡單,儲存記憶體消耗最小的乙個資料結構

優點:儲存密度高,儲存效率高,訪問速度快,可以隨機訪問結點

缺點:長度為定值,中途不易擴充。插入或刪除需要移動結點,修改效率低

C 資料結構 順序表

迴圈後面加 是個好行為,不然很容易犯低階錯誤 導致乙個變數的位置放錯了,看了很久沒看出bug 順序表 include includeusing namespace std const int maxsize 25 typedef struct seqlist int main cout endl r...

C資料結構 順序表

1.定義動態順序表 typedef struct seqlist seqlist 2.順序表基礎功能實現 初始化 void init seqlist p,int capacity 摧毀 void destory seqlist p 擴容 void checkcapacity seqlist p in...

C 資料結構 順序表

include using namespace std int alist 5 template class t class orderlist 獲得順序表的長度 intgetlength 在表尾插入元素 bool const t value alist curlen value curlen re...