線性表:零個或多個資料元素的有限序列
adt 線性表
data
線性表的資料集合為(a1,a2,a3,a4,...,an),每個元素的資料型別均為datatype.其中,除第乙個元素a1外,每個元素有且僅有乙個直接前驅元素;除最後乙個元素an外,每個元素有且僅有乙個直接後繼元素。資料元素之間的關係是一一對應的關係。
operation
initlist(*l); 初始化操作,建立乙個空的線性表l;
listempty(*l); 若現行表為空則返回true, 否則返回false.
clearlist(*l); 將線性表清空。
getelm(*l, i, *e); 將線性表中第i個位置的元素返回給e.
listdelete(*l, i, *e); 刪除線性表中第i個位置元素,並用e返回其值;
listlength(l); 返回線性表元素的個數;
endoperation
線性表的順序儲存結構指用一段位址連續的儲存單元依次儲存線性表的資料元素;
線性表順序儲存的結構**
#define maxsize 20 /* 儲存空間的初始分配量 */typedef int elemtype /* 型別根據實際情況定,這裡假設int*/
typedef sruct
sqlist;
順序儲存結構有3個屬性:
儲存空間的起始位置:陣列data,它的儲存位置就是儲存空間的起始位置;
線性表的最大儲存容量:陣列長度maxsize.
線性表的當前長度: length;
順序儲存結構的獲取元素、插入和刪除操作
#define ok 1#define error 0
#define true 1
#define false 0
typedef int status;
/** status是函式的型別,其值是函式結果狀態**,如ok等;
* 初始條件:順序線性表已經存在, 1<=i<=listlength(l)
* 操作結果:用e返回l中第i個資料元素的值;
*/status getelem(sqlist l, int i, elemtype *e)
status listinsert(*l, i, e)
l->data[i-1] = e;
l->length++;
return ok;
}// 刪除l的第i個資料元素,並用e返回其值,l的長度減1
status listdelete(sqlist *l, int i; elemtype *e)
}l->length--;
return ok;
}
線性表順序儲存結構的優點和缺點:
優點: 無須為表示表中元素之間的邏輯增加額外的儲存空間; 可以快速的訪問表中的任意位置元素;
缺點: 插入和刪除操作需要移動大量元素; 當線性表長度變化較大時,難以確定儲存空間的容量;造成儲存空間的碎片;
資料結構線性表1
include include include struct arr 定義了乙個資料型別,該資料型別的名字是struct arr void init arr struct arr parr,int length bool insert arr struct arr parr,int pos,int ...
資料結構 線性表1
一 線性表 定義 由零個或多個資料元素組成的有限序列。強調 1 線性表是乙個序列,也就是說元素之間是有先來後到的 2 若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼,其他元素都有且只有乙個前驅和後繼 3 線性表是有限的,即他能夠處理的元素是有限的 舉列 請問公司的組織架構是否屬於線性關係?答...
資料結構 1 線性表
線性表的順序儲存結構指的是用一段位址連續的儲存單元依次儲存線性表的資料元素。int getelem sqlist l,int i,elemtype e e l.data i 1 return 1 插入演算法思路 1.如果插入的位置不合理,丟擲異常。2.如果線性表的大小大於等於陣列長度,則丟擲異常或動...