順序表的基本操作及實現(二)

2021-09-26 23:53:24 字數 3794 閱讀 1240

這個順序表實現陣列採用的靜態分配方法,一旦空間佔滿,再加入新的資料是將會產生溢位,進而導致程式崩潰!

這篇中,引數傳遞的不是指標,而是引用,儲存為原始檔時要以.cpp結尾。

文末有完整的**示例。

順序表從儲存型別描述如下:

#define maxsize 50

typedef

int elemtype;

typedef

struct

sqlist;

這裡給出了順序表的一些基本操作方法:

void

initlist

(sqlist &l)

;//初始化順序表

bool insertlist

(sqlist &l,

int i, elemtype e)

;//在順序表的第i個位置插入元素

bool deletlist

(sqlist &l,

int i, elemtype &e)

;//刪除順序表達的第i個元素的位置,並用e返回

intlocateelem

(sqlist l, elemtype e)

;//按值順序查詢元素,並返回其位序

elemtype getelem

(sqlist l,

int i, elemtype &e)

;//查詢順序表中指定位置的元素,並用e返回

對應的實現過程如下**:

void

initlist

(sqlist &l)

bool insertlist

(sqlist &l,

int i, elemtype e)

if(l.length >= maxsize)

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

) l.data[i-1]

= e;

l.length++

;return true;

}bool deletlist

(sqlist &l,

int i, elemtype &e)

e = l.data[i-1]

;for

(j = i; j < l.length; j++

) l.length--

;return true;

}int

locateelem

(sqlist l, elemtype e)

}return0;

}elemtype getelem

(sqlist l,

int i, elemtype &e)

e = l.data[i]

;return1;

}

寫乙個簡單的main()函式測試,如下:

int

main()

printf

("所有元素:");

for(i =

0; i < sqlist.length; i++

)deletlist

(sqlist,

2, e)

;printf

("\n刪除的元素為:%d"

, e)

;printf

("\n所有元素:");

for(i =

0; i < sqlist.length; i++

)printf

("\n元素值為3的位序:%d \n"

,locateelem

(sqlist,3)

);getelem

(sqlist,

2, e)

;printf

("順序表中位置為2的元素值:%d \n"

, e)

;return0;

}

執行結果如下:

完整的**如下:

#include

"stdio.h"

#define maxsize 50

typedef

int elemtype;

typedef

struct

sqlist;

void

initlist

(sqlist &l)

;//初始化順序表

bool insertlist

(sqlist &l,

int i, elemtype e)

;//在順序表的第i個位置插入元素

bool deletlist

(sqlist &l,

int i, elemtype &e)

;//刪除順序表達的第i個元素的位置,並用e返回

intlocateelem

(sqlist l, elemtype e)

;//按值順序查詢元素,並返回其位序

elemtype getelem

(sqlist l,

int i, elemtype &e)

;//查詢順序表中指定位置的元素,並用e返回

intmain()

printf

("所有元素:");

for(i =

0; i < sqlist.length; i++

)deletlist

(sqlist,

2, e)

;printf

("\n刪除的元素為:%d"

, e)

;printf

("\n所有元素:");

for(i =

0; i < sqlist.length; i++

)printf

("\n元素值為3的位序:%d \n"

,locateelem

(sqlist,3)

);getelem

(sqlist,

2, e)

;printf

("順序表中位置為2的元素值:%d \n"

, e)

;return0;

}void

initlist

(sqlist &l)

bool insertlist

(sqlist &l,

int i, elemtype e)

if(l.length >= maxsize)

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

) l.data[i-1]

= e;

l.length++

;return true;

}bool deletlist

(sqlist &l,

int i, elemtype &e)

e = l.data[i-1]

;for

(j = i; j < l.length; j++

) l.length--

;return true;

}int

locateelem

(sqlist l, elemtype e)

}return0;

}elemtype getelem

(sqlist l,

int i, elemtype &e)

e = l.data[i]

;return1;

}

順序表的基本操作及實現(一)

這個順序表實現陣列採用的靜態分配方法,一旦空間佔滿,再加入新的資料是將會產生溢位,進而導致程式崩潰 文末有完整的 示例。順序表從儲存型別描述如下 define maxsize 50 typedef int elemtype typedef struct sqlist 這裡給出了順序表的一些基本操作方...

順序表的基本操作實現

順序表的基本操作實現 在複習的時候順便寫寫 基本和書上的一樣 include include define ok 1 define error 0 define status int define maxsize 10000 typedef int elemtype 對順序表的定義 typedef ...

順序表基本操作的實現

一 實驗學時 2學時 二 實驗目的 三 實驗內容 順序表的建立 取指定元素 返回指定元素位置 順序表中插入新元素 刪除指定元素操作的實現 四 主要儀器裝置及耗材 五 實驗步驟 分析問題 寫出演算法 編制程式 上機除錯 分析結果 六 程式清單 include include include 要用exi...