線性表是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。線性表的基本特徵:
抽象資料型別:
線性表一般包括插入、刪除、查詢等基本操作。
**如下:
public
inte***ce
list
線性表的分類:
線性表按物理儲存結構的不同可分為順序表(順序儲存)和鍊錶(鏈式儲存)。
順序表是在計算機記憶體中以陣列的形式儲存的線性表,是指用一組位址連續的儲存單元依次儲存資料元素的線性結構。線性表採用順序儲存的方式儲存就稱之為順序表。其插入刪除操作如圖所示:
**如下:
/**
* 順序表
* @author gain
* */
public
class
sequentiallist
implements
list
public
int size()
public
boolean isempty()
public
void add(item item)
public item get(int
index) throws exception
//插入元素
public
void insert(int
index,item item) throws exception
data[index] = item;
n++;
}//刪除第index個元素
public item delete(int
index) throws exception
n--;
return item;}}
注意:測試**如下:
public
class test
system.out.println("刪除1位置元素:"+sl.delete(1));
sl.insert(0,15);
for(int i=1;i<=sl.size();i++) }}
分析:
順序表效率分析:
鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。鍊錶有帶頭結點結構和不帶頭結點結構兩種,其結構如下圖
![](https://pic.w3help.cc/6b7/8112c4c01a27c359af71ebbe7523a.jpeg)
頭指標(head引用)所指的不存放資料元素的第乙個結點稱作頭結點(頭結點指向首元結點)。頭結點的資料域一般不放資料(也可存放鍊錶的長度、用做監視哨等),此結點不能計入鍊錶長度值。存放第乙個資料元素的結點稱作首元結點。
帶頭結點的鍊錶具有兩個優點:
帶頭結點的鍊錶插入與刪除示意圖:
**如下:
/**
* 帶頭結點的鍊錶
*@author gain
*/public
class
linkedlist
implements
list
linkedlist()
public
intsize()
public
boolean
isempty()
public
void
add(item item)
current.next = newnode;
n++;
}//找到第index個結點
public node location(int index) throws exception
public item get(int index) throws exception
//在index之後插入元素
public
void
insert(int index, item data) throws exception
//刪除第index個元素
public item delete(int index) throws exception
}
測試**如下:
public
class
test
system.out.println("刪除1位置元素:"+ll.delete(1));
ll.insert(0,15);
for(int i=1;i<=ll.size();i++) }}
分析:鍊錶插入和刪除操作的時間複雜度均為o(n)。另外,鍊錶讀取資料元素操作的時間複雜度也為o(n)。
順序表:
鍊錶:
資料結構筆記03 線性表
adt 線性表 list data operation endadt線性表的順序儲存結構 鏈式儲存結構 a.順序儲存結構原始碼 include include define maxsize 20 define ok 1 define error 0 define true 1 define fals...
資料結構(線性表)
1.試寫一演算法,在無頭結點的動態單鏈表上實現線性表操作insert l,i,b 並和在帶頭結點的動態單鏈表上實現相同操作的演算法進行比較。status insert linklist l,int i,int b 在無頭結點鍊錶l的第 i個元素之前插入元素 belse insert 2.已知線性表中...
資料結構 線性表
參考 一 線性表 順序表 單鏈表 迴圈鍊錶 雙鏈表 順序表 1.表的初始化 void initlist seqlist l 2.求表長 int listlength seqlist l 3.取表中第i個結點 datatype getnode l,i 4.查詢值為x的結點 5.插入 具體演算法描述 v...