2020資料結構 線性表(1)

2021-09-25 09:21:11 字數 1696 閱讀 9158

2.1線性表的定義

線性表是一種簡單的線性結構,具有如下特徵:

(1)集合中必須存在唯一的乙個第乙個元素。

(2)集合中必須存在唯一的乙個最後乙個元素。

(3)除最後乙個元素外均有乙個唯一的直接後繼。

(4)除第乙個元素外,均有唯一的直接前驅。

2.2線性表的儲存結構和基本操作的實現

2.2.1順序儲存

用一組連續的儲存空間存放線性表中的各個資料元素,用位置相鄰的儲存空間關係表示線性表中資料元素的前驅和後繼的次序關係。

//自定義結構體資料型別

//實用性受限,陣列長度固定。

#define max 100

typedef structsplist;

sqlist是乙個結構體資料型別,成為線性表。

另一種形式如下:

//具有良好的通用性,在實際使用過程中根據實際來定義陣列的長度

#define max 100

typedef structsplist;

採用第二種結構體定義方式。

假設有一組學生資料(姓名和總分),用順序表存放。

(1)定義學生資料的資料型別

typedef structstd;
(2)定義順序表資料型別

typedef structsqlist;
使用:sqlist l,*p = &l; //p指向了l

結構體l的三個資料成員訪問,既可以使用結構體(l.data[i],l.listsize,l.length),也可以使用指標(p->data[i],p->listsize,p->length)。

1.初始化操作

初始化操作時完成一片連續空間的申請,將空間的起始位址、容量、和資料的個數依次存放到順序表的三個對應成員中。

//乙個引數是能將順序表型別變數的變化傳出去,即順序表型別指標變數;另乙個是接受陣列大小的整形變數。

int initsqlist(sqlist *l,int max)

l->listsize = max;

l->length = 0;

return 1;

}

2.插入操作

將學生資料插入到順序表中指標成員所指向陣列的指定位置上,資料個數+1.

插入操作除了在尾部插入外,其他位置上的插入都需要將一組資料元素向後移動。

//第乙個引數能夠將順序表型別變數的變化傳出去的順序表型別的指標變數;第二個是接收插入資料元素位置的整型變數;第三個是接收待插入資料元素值的變數。

int insertsqlist(sqlist *l,int i,std x)

if(l->length = l->listsize)

for(k=l->length;k>=i;k--)

l->data[i-1] = x;

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

return 1;

}

2020資料結構 線性表(4)

2.4.1單向迴圈鍊錶 在單向鍊錶的基礎上,在其最後乙個結點的指標域中將空指標改為指向頭結點的指標,此即為單項迴圈鍊錶。常用的單項迴圈鍊錶有兩種,一種是帶頭指標的單項迴圈鍊錶,另一種是帶尾指標的單項迴圈鍊錶。帶頭指標的單項迴圈鍊錶判斷為空的條件 l next l 帶尾指標的單項迴圈鍊錶的判斷為空的標...

2020春資料結構 線性表

include define ll long long define endl n define io ios sync with stdio false cin.tie 0 using namespace std const int maxn 1e3 5 int a maxn typedef st...

資料結構線性表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 ...