線性表的順序表示又稱為順序儲存結構或順序映像
順序儲存定義:把邏輯上相鄰的資料元素儲存在物理上相鄰的儲存單元中的儲存結構,簡言之,邏輯上相鄰,物理上也相鄰
順序表的型別定義:
#define maxsize 100 //最大長度
typedef struct sqlist;
初始化線性表l (引數用引用)
status initlist_sq(sqlist &l){ //構造乙個空的順序表l
l.elem=new elemtype[maxsize]; //為順序表分配空間
if(!l.elem) exit(overflow); //儲存分配失敗
l.length=0; //空表長度為0
return ok;
初始化線性表l (引數用指標)
status initlist_sq(sqlist *l){ //構造乙個空的順序表l
l-> elem=new elemtype[maxsize]; //為順序表分配空間
if(! l-> elem) exit(overflow); //儲存分配失敗
l-> length=0; //空表長度為0
return ok;
銷毀線性表l
void destroylist(sqlist &l){
if (l.elem) deletel.elem; //釋放儲存空間
清空線性表l
void clearlist(sqlist &l) {
l.length=0; //將線性表的長度置為0
求線性表l的長度
int getlength(sqlist l){
return (l.length);
判斷線性表l是否為空
int isempty(sqlist l){
if (l.length==0) return 1;
else return 0;
獲取線性表l中的某個資料元素的內容
//根據指定位置,獲取相應位置資料元素的內容
int getelem(sqlist l,int i,elemtype &e){
if (i<1||i>l.length) return error;
//判斷i值是否合理,若不合理,返回error
e=l.elem[i-1]; //第i-1的單元儲存著第i個資料
return ok;
int locateelem(sqlist l,elemtype e)
for (i=0;i< l.length;i++)
if (l.elem[i]==e) return i+1;
return 0;
status listinsert_sq(sqlist &l,int i ,elemtype e){
if(i<1 || i>l.length+1) return error; //i值不合法
if(l.length==maxsize) return error; //當前儲存空間已滿
for(j=l.length-1;j>=i-1;j--)
l.elem[j+1]=l.elem[j]; //插入位置及之後的元素後移
l.elem[i-1]=e; //將新元素e放入第i個位置
++l.length; //表長增1
return ok;
將線性表l中第i個資料元素刪除
status listdelete_sq(sqlist &l,int i,elemtype &e){
if((i<1)||(i>l.length)) return error; //i值不合法
e=l.elem[i-1]; //將欲刪除的元素保留在e中
for (j=i;j<=l.length-1;j++)
l.elem[j-1]=l.elem[j]; //被刪除元素之後的元素前移
--l.length; //表長減1
return ok;
線性表 順序表示和實現(順序表)
線性表 順序表 實現 方式 陣列 說明 1.資料元素從下標0開始 2.順序表元素個數初始是為0,有乙個時為1,即 size比元素個數大1 3.也是size比陣列下標大1 4.有上限 maxsize 線性表 順序表 實現 陣列 1.資料元素從下標0開始 2.順序表元素個數初始是為0,有乙個時為1,即 ...
線性表的順序表示和實現
1 線性表是最常用且最簡單的一種資料結構。簡言之,乙個線性表就是n個資料元素的有限序列。儲存空間是連續變化的 線性表的順序表示和實現 include include define list init size 10 define listincrement 10 define elemtype ch...
線性表的順序表示和實現
一 前言 線性表的順序表示是指用一組位址連續的儲存單元依次儲存線性表的資料元素。一般來說,線性表的第i個資料元素ai的儲存位置為 loc ai loc a0 i 1 xl 其中loc a0 表示的是第乙個資料元素的儲存位置,通常稱為線性表的起始位置或者基位址。l代表的時每個資料元素需要占用l個儲存單...