線性表是具有相同資料型別的n個資料元素的有限序列,除第乙個元素外,每個元素有且僅有乙個直接前驅。除最後乙個元素外,每個元素有且僅有乙個直接後繼。
線性表的順序表示
線性表的順序儲存又稱順序表。它是用一組位址連續的儲存單元依次儲存線性表中的資料元素,從而使得邏輯上相鄰的兩個元素在物理位置上也相鄰。
順序表的特點是表中元素的邏輯順序與其物理順序相同。
順序表最主要的特點是隨機訪問,即通過首位址和元素序號可以在時間o(1)內找到指定元素。
順序表的定義:
1.靜態定義(大小固定,靜態分配)
#define maxsize 50 //定義線性表的最大長度
typedef structsqlist; //順序表的型別定義
2.動態定義(分配的空間大小可以在執行時決定)
#define initsize 100 //表長度的初始定義
typedef structseqlist; //動態分配陣列順序表的型別定義
c的初始動態分配語句為
l.data=(elemtype*)malloc(sizeof(elemtype)*initsize);
動態分配並不是鏈式儲存,它同樣屬於順序儲存結構,物理結構沒有變化,依然是隨機訪問方式。只是分配的空間大小可以在執行時決定。
順序表上基本操作的實線:
順序表的插入:
bool listinsert(sqlist &l,int i,elemtype e)
關於順序表插入操作的時間複雜度分析:
最好情況,即在順序表的表尾插入,不需要移動元素,因此時間複雜度為o(1)
最壞情況,即在順序表的表頭插入,所有元素都需要移動,因此時間複雜度為o(n);
平均情況,時間複雜度為o(n);
順序表的刪除操作:
bool listdelete(sqlist &l,elemtype &e,int i)
{ if(i<1||i>l.length) //判斷刪除位置是否合理
return false;
else
e=l.data[i-1]; //將被刪除位置的值賦給e
for(int j=i;j關於順序表刪除操作的時間複雜度分析:
最好情況:刪除最後乙個位置的元素,不需要移動元素,時間複雜度是o(1)
最壞情況:刪除第乙個位置的元素,所有元素都需要移動,時間複雜度是o(n)
平均情況:時間複雜度是o(n)
順序表的按值查詢:
int locateelem (sqlist l,elemtype e){ //查詢成功,返回該元素位置的下標,若查詢失敗,則返回0
int i;
for(i=0;i順序表的按值查詢的時間複雜度分析:
最好情況:查詢的元素就在表頭,時間複雜度為o(1)
最壞情況:查詢元素在表尾(或不存在時),時間複雜度為o(n)
平均情況:時間複雜度為o(n)
順序表的優點:
資料結構之線性表 順序儲存
從新在學習一遍資料結構,每天盡量都寫點!fuction the list struct by xiaolong date 2012年 03月 13日 星期二 16 50 12 cst 功能 線性表的順序儲存實現 主要功能 include include define max size 20 defi...
資料結構 線性表之順序儲存
第i個元素與第乙個元素的儲存位置滿足 loc ai loc a1 i 1 m include include include include 線性表的順序儲存 define max size 100 定義線性表最大長度 順序儲存的缺陷之一 typedef structdata typedef str...
資料結構之線性表 順序儲存
線性表作為一種最簡單的資料結構,在資料的管理和運用方面有著很大的作用,而這種特殊的資料集合,其自身有著很強的特點 線性表 線性表是n個型別相同的資料元素的有限集合,且n大於0,除第乙個元素無直接前驅,和最後乙個元素沒有直接後繼以外,其餘的每個元素都有乙個直接前驅和乙個直接後繼,而且元素之間具有一對一...