線性表之順序表示

2021-10-11 23:33:54 字數 3759 閱讀 1925

1.3 線性表的儲存結構

1.4 順序儲存與鏈式儲存的比較

2. 順序表

2.4 順序表上基本操作

2.4.2 刪除操作

2.4.3 按值查詢

3. 整體**(c語言)

線性表是具有相同資料型別的n(n>0)個資料元素的有限序列。
若用l命名,表示:l=(a1,a2,a3,…,ai-1,ai,ai+1,…,an)

順序儲存結構:順序表

鏈式儲存結構:鍊錶

線性表的順序儲存叫順序表
#include

"stdio.h"

#define maxsize 50

//線性表的最大長度

typedef

int elemtype;

typedef

struct

sqlist;

//使用typedef重新定義的順序表的型別

#include

"stdio.h"

#include

"malloc.h"

typedef

int elemtype;

#define maxsize 100

//動態陣列的最大容量

typedef

struct

sqlist;

//使用typedef重新定義的順序表的型別

//動態分配空間

l->data=

(int*)

malloc

(maxsize*

sizeof

(int))

;

實現思路

1. 在順序表l的第i個(1<=i<=l.length+1)個位置插入新元素e

2. 如果i的輸入不合法,則返回0,表示插入失敗

3. 若i的輸入合法,順序表的第i個元素以及其後的所有元素右移乙個位置,騰出乙個空位置插入新元素e,順序表長度增加1,插入成功,返回1。

實現**
/*	

* 將元素e插入到順序表l中位序i的位置

*/int

listinsert

(sqlist *l,

int i,elemtype e)

//判斷當前的儲存空間是否已滿

if(l->length >= maxsize)

// 移位

for(j=l->length;j>=i;j--

)//執行插入操作

l->data[i-1]

= e;

//順序表長度加 1

l->length++

;return1;

}

實現思路

1. 刪除順序表l中的第i(1<=i<=l.length)個位置的元素

2. 成功則返回1,並將被刪除的元素用引用變數e返回

3. 否則,返回0

實現**
/*

* 將元素e從順序表l中刪除

* *l: 線性表的位址

* i: 待刪除元素在順序表l中的位置

* e:返回刪除元素資料域中的資料

*/int

listdelete

(sqlist *l,

int i,elemtype *e)

//獲取被刪除元素資料域中的資料

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

;//移位,從被刪除元素的位置開始,講後面的元素往前移動

for(j=i;jlength;

++j)

//順序表長度減 1

l->length--

;return1;

}

實現思路
1. 在順序表l中查詢第乙個元素值等於e的元素,並返回其位序
實現**
/*

* 查詢順序表中值為e的元素,如果查詢成功,返回元素位序,否則返回0

* l:順序表

* e:待查詢的資料

*/int

localeelem

(sqlist l,elemtype e)

}//查詢失敗

return0;

}

#include

"stdio.h"

#include

"malloc.h"

typedef

int elemtype;

#define maxsize 100

//動態陣列的最大容量

typedef

struct

sqlist;

//使用typedef重新定義的順序表的型別

//動態分配空間

//初始化順序表

void

initlist

(sqlist *l)

/* * 將元素e插入到順序表l中位序i的位置

*/int

listinsert

(sqlist *l,

int i,elemtype e)

//判斷當前的儲存空間是否已滿

if(l->length >= maxsize)

// 移位

for(j=l->length;j>=i;j--

)//執行插入操作

l->data[i-1]

= e;

//順序表長度加 1

l->length++

;return1;

}/** 將元素e從順序表l中刪除

* *l: 線性表的位址

* i: 待刪除元素在順序表l中的位置

* e:返回刪除元素資料域中的資料

*/int

listdelete

(sqlist *l,

int i,elemtype *e)

//獲取被刪除元素資料域中的資料

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

;//移位,從被刪除元素的位置開始,講後面的元素往前移動

for(j=i;jlength;

++j)

//順序表長度減 1

l->length--

;return1;

}/** 查詢順序表中值為e的元素,如果查詢成功,返回元素位序,否則返回0

* l:順序表

* e:待查詢的資料

*/int

localeelem

(sqlist l,elemtype e)

}//查詢失敗

return0;

}//建立順序表

void

createlist

(sqlist *l)

}//輸出順序表

void

printlist

(sqlist l)

}main()

線性表順序表示

include include include define listlength 100 typedef struct datatype typedef struct initlist,list 建立並返回乙個空的線性表 list createlist void else printf out o...

順序表示的線性表 順序表

順序表具有以下特徵,邏輯上相鄰的元素,在物理上也是相鄰的,只要確定了第乙個元素的起始位置,線性表上的任一元素都可以隨機訪問因此線性表的順序儲存結構是一種隨機訪問的儲存結構 儲存結構 include listsize 100 typedef struct datatype list listsize ...

線性表的順序表示

線性表的順序表示終於馬馬虎虎的勉強寫 完了,寫的不是很完整,開始時比較不理 解就是動態分 配記憶體,現 在懂一點點了,資料結構落下很多了,這幾天要好好整了 include include includeusing namespace std define ok 1 define error 0 de...