線性表
線性表(list
):
每個元素型別均為datatype。
operation:
initlist(*l); 初始化操作,建立乙個空的線性表l。
listempty(l):若線性表為空,返回
true
,否則返回
false。
clearlist(*l):將線性表清空。
getelem(l,i,*e): 將線性表
l中的第
i個位置元素值返回給e。
e相等的元素,如果查詢成功,返回該 元素的序號,否則,返回
0表示查詢失敗。 l
中的第i
個元素之前插入新元素e。
listdelete(*l,i,*e):刪除線性表
l中的第
i個位置元素,並用
e返回其值。
listlength(l): 返回線性表
l的元素個數。
順序儲存結構:
//順序儲存的結構**:
//順序儲存的結構**:
#define maxsize 20 //儲存空間初始化分配量
typedef int elemtype; //elemtype型別根據實際情況而定,這裡假設為int
typedef struct
sqlist;
順序結構的元素獲取操作(用e返回l中第
i個元素的值):
#define ok 1
#define error 0
#define true 1
#define false 0
typedef int status; //status是函式的型別,其值是函式結果狀態**
status getelem(sqlist l,int ,elemtype *e)
順序結構的元素插入操作(在l中第
i個位置之前插入新的資料元素e,
l的長度增加
1):
status listinsert(sqlist *l,int i,elemtype e)
l->data[i-1]=e; //新元素插入
l->length++; //線性表長度加1
return ok;
}
順序結構的元素刪除操作(
刪除l的第
i個資料元素,並用
e返回其值,
l的長度減
1):
status listdelete(sqlist *l,int i,elemtype *e)
l->length--; //長度減1
return ok;
}
線性表的順序儲存結構:
優點:無需為表中元素之間的邏輯關係而增加額外的存貯空間
可以快速的訪問表中任一位置的元素
缺點:插入和刪除操作需要大量移動元素
當線性表長度變化較大時,難以確定儲存空間的容量
造成儲存空間的「碎片」
上面的優缺點,依舊概括了順序儲存的特點,在我看來,線性表順序儲存結構是最接近之前學的陣列知識,而且是資料結構中,最容易理解,但也是基礎而且重要的乙個知識點,適用於解決查詢較為頻繁的問題,比如銀行賬戶資金的檢視等。
線性表順序儲存基本操作
線性表的基本操作 status,自定義的乙個列舉型別,enum status status list init sqlistptr l 初始化線性表 void list clear sqlistptr l 清空線性表 void list destory sqlistptr l 銷毀線性表 bool ...
線性表順序儲存的基本操作
線性表的操作主要包括如下幾個 初始化,插入,刪除,查詢 單個元素所在的位置,某個位置的具體元素,查詢所有的元素 判斷是否為空,兩個線性表合併 當需要對線性表進行修改的時候,要傳遞線性表變數的位址。否則的話,只需要傳遞傳遞變數即可 至於原因 想想當初自定義函式中對兩個元素進行交換的實現 include...
線性表線性(順序)儲存結構
實現順序表的曾刪查操作 元素結構體 define maxsize 100 線性表的最大長度 typedef int elemtype elemtype為線性表元素的型別 typedef struct sequenlist 插入操作 bool insertinseqlist sequenlist l,...