線性表的儲存方式有兩種,一種是順序表,另外一種是鍊錶。順序表是一種簡單且常用的儲存方式。在順序表中,邏輯相鄰的資料,儲存位址也相鄰。在鍊錶中,邏輯相鄰的資料,儲存位址不一定相鄰。
順序表的實現比較簡單,通常用陣列實現,陣列長度確定,將邏輯相鄰的資料儲存在相鄰的位址中,可以計算每個資料的位址,由序號快速查詢資料。但是插入、刪除需要平均移動
o(n)資料,很不方便。在長度為n的線性表中第i個位置插入資料的過程,需要移動n-i個資料,刪除第i個位置的資料需要移動n-i-1個資料。線性表的順序表**實現如下:
public class lineardeno1
public void add(int temp)
public void insert(int i,int temp)
array[j]=temp;
}public void deletenum(int i)
public void deletecontent(int temp)}}
}}
鍊錶的實現較為複雜,資料儲存在不連續的位址中。不能隨機查詢,只能按順序查。但是鍊錶的插入和刪除非常方便,且長度可變,很靈活。鍊錶分為單鏈表和其他鍊錶,線性表的實現以單鏈表為例。單鏈表分為帶頭的和不帶頭的單鏈表。當鍊表需要維護確定的資訊是用帶頭的。這樣對於插入和刪除也比較方便,不用對頭進行特殊處理。但是浪費一些儲存空間。當不需維護某些資訊時,用不帶頭的單鏈表,節省儲存空間,但對頭需要做特殊處理。下面用帶頭單鏈表實現。
public class node
public node(int name)
public node(node next)
public node(int name,node next)
public void setname()
public int getname()
public void setnext()
public int getnext()}
public class lineardeno2
public void initfirst(node temp)
public void initlast(node temp)
public void insert(int i,node temp)
public void delete(int i)
public void delete(node temp))}
public int getlength()
length++;
}return length;}
public node getnode(int i)
int j=0;
node p=head.getnext();
while(p!=null&&jreturn p; }
}
總之,順序表適合靜態線性表,多次隨機查詢,盡量少插入刪除。單鏈表適合動態線性表,長度動態變化,多次插入刪除。
資料結構 線性表及線性表順序儲存
寫的一定程度上,要再次提公升的時候,是該好好的看一下資料結構和演算法了。趁著最近有時間,好好的複習一下,今天主要是線性表和線性表的順序儲存。1 線性表是一種最基本 最簡單的的資料結構,是一種線性結構。2 線性表中資料元素之間的關係是一對一,是n個資料元素的有限序列。3 若將線性表記為 a1,ai 1...
資料結構 鏈式儲存線性表
鏈式儲存結構的線性表 簡稱為鍊錶 將採用一組位址任意的儲存單元存放線性表中的資料元素,鏈式結構的線性表不會按線性的邏輯順序來儲存資料元素,它需要在每乙個資料元素裡儲存乙個引用下乙個資料元素的引用。優點 插入 刪除元素快,充分利用計算機記憶體空間 缺點 查詢元素需要整體遍歷,空間開銷大 單鏈表 cre...
《資料結構 線性表》順序儲存
一 什麼是線性表?線性表定義 0個 或 多個 資料元素 有限 序列。序列 這個必須是有順序的,若元素存在多個,則第乙個元素無前驅,最後乙個元素無後驅。乙個元素只能有乙個前驅 後驅。有限 線性表必須是有限的,無限的只存在於數學中。線性表元素個數必須是 大於 0,當 n 0 時,稱為空表。二 線性表抽象...