線性表的特點
如上圖所示,a2是a1的後繼,a1是a2的前驅,其中a1沒有前驅,an沒有後繼,n為線性表的長度,當n==0時,線性表為空
其中順序儲存方式的表稱為順序表,鏈式儲存方式的表稱為鍊錶
一、順序表
儲存位置連續,可以很方便計算各個元素的位址,查詢效率高,增刪效率低
**實現add、remove等操作
public
class
myarraylist
arr = temp;
} arr[size++
]= obj;
}/**
* 移除下標為index元素
* @param index 第幾個元素
* @return 是否移除成功
*/public
boolean
remove
(int index)
for(
int j =
0; j <
size()
; j++
) size--
;return
true;}
}return
false;}
/** * 獲取指定索引上的元素
* @param index
* @return 第index上的索引的元素
*/public object get
(int index)
/** * 獲取元素個數
* @return
*/public
intsize()
}
二、鍊錶
線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素,這組儲存單元可以是連續的,也可以是不連續的,增刪效率高,查詢效率相對低
**實現add、remove等操作
public
class
mylinkedlist
implements
iterable
}public
mylinkedlist()
public
void
clear()
public
intsize()
public
boolean
isempty()
/** * 直接在鍊錶後端插入元素
* @param x
*/public
void
add(e x)
/** * 根據索引取到元素,在元素後面插入新元素
* @param index
* @param x
*/public
void
add(
int index,e x)
/** * 根據下標移除元素
* @param index
* @return
*/public e remove
(int index)
/** * 通過獲取乙個新節點,然後按照指示的順序改變指標而完成乙個雙鏈表中的插入操作
* @param p
* @param x
*/public
void
addbefore
(node
p,e x)
/** * 將p前乙個節點指向後乙個節點,後乙個節點指向前乙個節點
* @param p
* @return
*/private e remove
(node
p)/**
* 根據下標取元素
* @param index
* @return
*/private node
getnode
(int index)
private node
getnode
(int index,
int lower,
int upper)
else
return p;
}private
void
doclear()
@override
public iterator
iterator()
private
class
linkedlistiterator
implements
iterator
@override
public e next()
@override
public
void
remove()
}}
資料結構學習 線性表
線性表一般分為順序結構和鏈式結構。順序表裡面元素的位址是連續的,如陣列 鍊錶裡面節點的位址不是連續的,是通過指標連起來的,如單鏈表 順序結構 優點 易於查詢,索引快 list n 這樣的操作,o 1 複雜度。缺點 擴充套件性弱,不易刪除 插入,這兩項操作均是o n 的時間複雜度 鍊錶結構 優點 擴充...
資料結構學習 線性表
考試前複習下資料結構,把一些知識點整理在這!主要參考了殷人昆主編的 資料結構 用物件導向方法與c 語言描述 這本書,以及中山大學劉聰老師的課件內容!鍊錶雙鏈表 線性表 linear list 是由n n 0 個資料元素 結點 a 0 a 1 a 2 a n 1 組成的有限序列。維基百科 線性表是乙個...
資料結構學習 線性表
鏈式儲存用指標表示邏輯結構,可以很方便的表示各種邏輯結構。順序儲存結構中,插入和刪除結點需要大量的移動元素,效率很低。順序儲存結構既可以順序訪問也可以隨機訪問,而鏈式結構只可以順序訪問。對n個元素進行排序的時間複雜最快也要o n 初始有序 通常是o nlog2n 或o n 2 單鏈表只能順序查詢插入...