資料結構 線性表學習總結1(順序表)

2021-10-03 14:54:59 字數 4608 閱讀 4626

一、線性表定義及特點

1、定義

2、特點

3、記法

二、線性表作為抽象資料型別所定義的一些操作

1、什麼是抽象資料型別

2、線性表常用的基本操作總覽

三、基本操作的結構**及其演算法思路

1、線性表順序儲存結構(順序表)的結構**

#define maxsize 20

typedef

int elemtype;

typedef

struct

sqlist;

//實際上是對陣列封裝,增加了當前長度變數length

順序儲存結構封裝需三個屬性:

*2、initlist(l),構建乙個新的線性表

status initlist_sq

(sqlist &l)

3、listempty(l),判斷線性表是否為空

status listempty_sq

(sqlist l)

*4、clearlist(l),清空線性表

status clearlist_sq

(sqlist &l)

l.length =0;

return ok;

}

*5、getelem(l,i,e),查詢線性表l第i個位置的元素並返回給e;

status getelem_sq

(sqlist l,

int i, elemtype *e)

*e = l.elem[i-1]

;return ok;

}

status locateelem_sq

(sqlist l,elemtype e)

return error;

}

**7、listinsert(l,i,e):刪除線性表l中的第i個元素,並用e返回其值

status listinsert_sq

(sqlist *l,

int i,elemtype *e)

if( i<

1|| i>l->length+1)

//當i不在範圍內時

if( i<=l->length )

//若插入資料位置不在表尾

} l->elem[i-1]

= e;

//將新元素插入

l->length++

;return ok;

}

演算法思路:

8、listdelete(*l,i,*e):刪除線性表l中第i個元素,並用e返回其值

status listdelete_sq

(sqlist *l,

int i,elemtype *e)

if( i<

1|| i>l->length )

//當i不在範圍內時

*e = l->elem[i-1]

;//取出要刪除元素位址

if( ilength )

//若刪除資料位置不在表尾

} l->length--

;return ok;

}

演算法思路:

四、順序儲存結構的優缺點

五、綜上線性表的整體**

/* 順序表練習 */

#include

#include

#define ok 1

#define error 0

#define true 1

#define false 0

#define maxsize 20

typedef

int elemtype;

//順序儲存結構線性表結構**

typedef

struct

sqlist;

typedef

int status;

//status 是函式的型別,其值是函式結果狀態**,如ok等

//初始條件:順序線性表l已存在,i<=i<=listlength(l)

//操作結果,用e返回l中第i個資料元素的值

status initlist_sq

(sqlist *l)

status listempty_sq

(sqlist l)

status listlength_sq

(sqlist *l)

status clearlist_sq

(sqlist *l)

status getelem

(sqlist l,

int i, elemtype *e)

//查詢線性表l第i個位置的元素並返回給e

*e = l.elem[i-1]

;return ok;}

status locateelem_sq

(sqlist l,elemtype e)

return error;

}status listinsert_sq

(sqlist *l,

int i,elemtype *e)

//刪除線性表l中的第i個元素,並用e返回其值

if( i<

1|| i>l->length+1)

//當i不在範圍內時

if( i<=l->length )

//若插入資料位置不在表尾

} l->elem[i-1]

=*e;

//將新元素插入

l->length++

;return ok;

}status listdelete_sq

(sqlist *l,

int i,elemtype *e)

//刪除線性表l中第i個元素,並用e返回其值

if( i<

1|| i>l->length )

//當i不在範圍內時

*e = l->elem[i-1]

;//取出要刪除元素位址

if( ilength )

//若刪除資料位置不在表尾

} l->length--

;return ok;

}status displaylist_sq

(sqlist *l)

int i ;

for(i =

1; i <= l->length; i++

)printf

("\n");

return ok;

}int

main()

printf

("表長:%d\n"

,listlength_sq

(&list));

listempty_sq

(list)==1

?printf

("表空\n"):

printf

("表不空\n");

printf

("輸出順序表:\n");

displaylist_sq

(&list)

;printf

("在第1位插入9\n");

e =9;

listinsert_sq

(&list,1,

&e);

printf

("輸出順序表:\n");

printf

("表長:%d\n"

,listlength_sq

(&list));

displaylist_sq

(&list)

;printf

("\n刪除第10位\n");

listdelete_sq

(&list,10,

&e);

printf

("表長:%d\n"

,listlength_sq

(&list));

printf

("輸出順序表:\n");

displaylist_sq

(&list)

;return0;

}

l->elem[0]

=(elemtype *

)malloc

(maxsize*

sizeof

(elemtype));

//錯誤的,陣列元素不不能直接賦值的,這種建立方式一般用在鍊錶裡面

status initlist_sq

(sqlist &l)

//這裡的函式定義是錯的,c++才允許這樣傳指標

正確寫法:

status initlist_sq

(sqlist *l)

自己實踐一邊感覺收益良多。

順序線性表 資料結構 1

線性表的一種,是與記憶體結構對應的,故稱之為線性順序表。資料結構第二周目,整理下以前的 對應書上的p19 p26。typedef struct sqlist 順序表 2017 04 23 c2 1.h 線性表的動態分配順序儲存結構。在教科書第22頁 define list init size 30 ...

資料結構 線性表 順序表

豐富了前邊的功能,更加完善。include include define list init size 100 線性表儲存空間的初始分配量 define listincrement 10 線性表儲存空間的分配增量 using namespace std const int overflow 2 ty...

資料結構 線性表 順序表

線性表是具有相同特性的資料元素的乙個有限序列。線性表的順序儲存結構是,把線性表中的所有元素按照其邏輯順序依次儲存到從計算機儲存器中指定的儲存位置開始的一塊連續的儲存空間。include include include define maxsize 50 using namespace std 假設l...