資料結構03 線性表

2021-07-09 07:32:11 字數 2915 閱讀 2276

線性表是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第乙個和最後乙個資料元素之外,其它資料元素都是首尾相接的。

線性表的基本特徵

抽象資料型別

線性表一般包括插入、刪除、查詢等基本操作。

**如下:

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++) }}

分析

順序表效率分析:

鍊錶是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點(鍊錶中每乙個元素稱為結點)組成,結點可以在執行時動態生成。每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。

鍊錶有帶頭結點結構和不帶頭結點結構兩種,其結構如下圖

頭指標(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...