對於線性結構,有兩種儲存的方法,一種是使用
c語言中內建的陣列,這樣的結構成為
順序表;另一種使用指標,這樣的結構成為鍊錶。
對於線性結構,有12種基本的操作,分別是:
初始化、刪除順序表、清空順序表、判斷是否為空、遍歷、求表的長度、求某個元素在表中的位置、返回特定序號的元素、求某個元素的前乙個元素、求某個元素的後乙個元素、插入乙個元素、刪除乙個元素。
大部分程式都很簡單,唯一需要說明的是,
在插入元素時,如果線性表已滿,需要重新分配記憶體空間,新分配的記憶體空間設定為原來的2倍。這個倍數也不是我隨便給出的,我是參考c++中stl裡面的vector給出的。相信那些專家,肯定考慮了倍數過小而導致多次分配記憶體與記憶體分配太大的折中,我也就照貓畫虎的這樣做了。
我們可以看出,利用陣列來表示線性結構,最大的優點在於由於陣列是連續儲存的,所以隨機訪問速度非常快,只需要用陣列的首位址+下標*sizeof(結構體)就能計算指定元素的位址了。而它的缺點也很明顯:就是插入、刪除時效率很低,因為要移動大量的元素,甚至需要重新分配記憶體。
//用陣列實現線性表
#include#includetypedef int elemtype;
typedef struct arraylist
arraylist;
//初始化順序表:給出初始化長度
bool initialarray(arraylist *arrlst,int len)
//刪除順序表
void deletearray(arraylist* arrlst)
//清空順序表
void cleararray(arraylist *arrlst)
//判斷是否為空
bool is_empty(arraylist *arrlst)
else
}//求有多少個元素
int arraylength(arraylist *arrlst)
//取出某個元素
bool getelem(arraylist* arrlst,int index,elemtype *e)
else }
//遍歷順序表,並列印
void printfarray(arraylist *arrlst)
printf("\n");
}//判斷某個元素的位置
int locateelem(arraylist *arrlst,elemtype e)
return -1;
}//求某個元素的前驅:如果沒找到返回-2;如果是第乙個元素。返回-1;否則返回前驅元素的下標
int preelement(arraylist *arrlst,elemtype e,elemtype *preelem)
else
}} return -2; }
//求某個元素的後繼:如果沒找到,返回-2,如果是最後乙個元素,返回-1;否則返回後繼元素的下標
int nextelement(arraylist *arrlst,elemtype e,elemtype *nxtelem)
else
} }
return -2;
} //將元素插入到指定位置
bool insertelem(arraylist *arrlst,int index,elemtype e)
//如果順序表儲存空間已滿,則需要重新分配記憶體
if(arrlst->length==arrlst->size)
}for(int i = index; i < arraylength(arrlst); ++i)
arrlst->array[index]=e;
++arrlst->length;
return true;
}//刪除某個元素
bool deleteelem(arraylist *arrlst,int index ,elemtype *e)
*e=array->array[index];
for(int i = index; i < arraylength(arrlst); ++i)
--arrlst->length;
return true;
}
java 用動態陣列實現線性表
package com.jzm author jzm param class alist private void doublearray system.out.println 擴鍊錶長度為 a.length system.out.println 結束擴充套件鍊錶 public alist publ...
線性表 陣列實現
include include includeusing namespace std define ms a memset a,0,sizeof a define maxlength 100 線性表陣列實現,定義乙個具有兩個域結構體,陣列下標為0的地方不存放元素,可以使位置i對應整數i 第乙個域是陣...
線性表陣列實現
線性表 順序表示 用陣列實現,比較簡單 線性表的順序表示指的是用一組位址連續的儲存單元一次儲存線性表的資料元素,在高階語言程式設計中,陣列具有隨機訪問的特性,因此通常都用陣列來描述資料結構中的順序儲存結構,對於線性表,可以用一維陣列來實現 1 順序表的初始化 定義乙個object型別的陣列,可儲存任...