這個順序表實現陣列採用的靜態分配方法,一旦空間佔滿,再加入新的資料是將會產生溢位,進而導致程式崩潰!
這篇中,引數傳遞的不是指標,而是引用,儲存為原始檔時要以.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...