第二章 線性表 順序表

2021-09-14 06:56:28 字數 2392 閱讀 1144

資料元素的位址計算公式:l(ai)=l(a1)+(i-1)*c (c為乙個資料元素所佔的儲存量。)

順序表結構圖。

//順序表的靜態儲存結構。 

#define maxsize 80

typedef structsqlisttp;

//靜態線性表的初始化 

status initlist(sqlisttp&l)

//靜態順序表上實現插入操作。

status listinsert_sqtp(sqlisttp&l,int i,elemtype e)

l.elem[i-1]=e;

++l.length;

return ok;

}//插入操作的基本步驟,

//檢測

//後移

//插入

//修正表長(表長加1)

//動態順序儲存結構的描述。

#define list_init_size 100// 線性表儲存空間的初始分配量

#define listcreament 10 // 線性表儲存空間的分配增量

typedef structsqlist;

//動態線性表的初始化。

status initlist(sqlist&l)
//動態順序表的插入

listinsert_sq(&l,i,e);

//動態順序表l中第i個元素ai前插入乙個值為e的元素,其中1<=i<=l.length+1

主要操作步驟及其實現方法。

![在這裡插入描述](

1.檢測(判斷引數i是否合理即及空間是否滿)。

i) i<1 ||i>l.length+1

ii) l.length>=l.listsize 則空間已滿,需要增加分配空間。

2.後移(插入位置及之後的所有元素後移一位。)

q=&(l.elem[i-1]);//q指示插入位置。 

for(p=&(l.eleme[l.length-1]);p>=q;--p)

3.插入(將元素插入到指定位置上)

*q=e;//插入e

4.修正表長(表長加+1)

++l.length;//表長增1;

實現演算法。

status listinsert_sq(sqlist&l,int i,elemtype e)

q=&(l.elem[i-1]);

for(p=&(l.elem[l.length-1]);p>=q;--p)

*q=e;

++l.length;

return ok;

}

//順序表的刪除。listdelete_sq(sqlist&l,int i,elemtype &e)

動態順序表l中刪除第i個元素ai,並返回e, (1<=i<=n):

操作步驟及其實現

1.檢測(判斷引數i是否合理)

i<1||i>l.length,刪除位置不合理,演算法結束。

2.前移(刪除元素之後的所有元素前移一位).

p=&(l.elem[i-1]);//p指示刪除位置

e=*p;//用e返回被刪元素的值。

q=&(l.elem[l.length-1];//p指示表尾位置。

for(++p;p>=q;++p)

實現演算法:

status listdelete_sq(sqlist&l,int i,elemtype&e)

--l.length;

return ok;

}

題目:有序順序表中刪除所有重複資料元素的演算法。

status delsqlist(sqlist &l)

--l.length;//修正表長。

}else

} return ok;

}

第二章 線性表

定義 線性表簡稱表,是n n 0 個具有相同型別的資料元素的有限序列,線性表中資料元素的個數稱為線性表的長度。長度等於0時稱空表,乙個非空表通常記作 l a1,a2,an 線性表的性質 1.有限性 元素個數有限 2.相同性 元素型別相同 3.順序性 除首位元素外,相鄰元素都有前驅和後繼 2.1.2線...

第二章線性表

2 1線性表的邏輯結構 1 線性表是n 0個具有相同型別的資料元素的有限序列。空表是長度等於零的線性表。2 特性 有限性 相同性 順序型。2 2線性表的順序儲存結構及實現 1 c 中陣列的下標是從0開始的,而線性表中元素的序號是從1開始的。線性表中第i個元素儲存在陣列中下標為i 1的位置。2 順序表...

第二章 線性表

寫在前邊的話寫 好比寫詩,資料結構就好比唐詩三百首,熟讀並默寫這是基本功能,所以要閒的沒事可以在紙上多寫 線性表的定義和基本操作 線性表的實現 2.1順序儲存結構 2.2鏈式儲存結構 2.3線性表的應用 線性表的邏輯特性 只有乙個表頭元素,只有乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼元素,其...