最近學習了關於鍊錶、線性表以及collection介面中的set介面和list介面,本文為關於這些知識 的筆記
儲存區間離散(資料不是連續存放的),占用記憶體比較寬鬆,故空間複雜度很小,但操作元素的時間複雜度很大,達o(n)。
鍊錶的特點是:鍊錶動態分配記憶體 鍊錶在記憶體中是不連續的
鍊錶是一種物理儲存結構上非連續,非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。
陣列的特點是:陣列靜態分配記憶體, 陣列在記憶體中是連續的
(陣列)儲存區間是連續的,占用記憶體嚴重,故空間複雜度很大。但陣列的二分查詢(前提是必須有序)時間複雜度小,為o(1);
陣列的特點
1.陣列本質上就是一段連續的記憶體空間,用於記錄多個型別相同的資料;
2.陣列一旦宣告完畢,則記憶體空間固定不變;
3.插入和刪除操作不方便,可能會移動大量的元素導致效率太低;
4.支援下標訪問,可以實現隨機訪問;
5.陣列中的元素可以是基本資料型別,也可以使用引用資料型別;
集合的特點
1.記憶體空間可以不連續,資料型別可以不相同;
2.集合的記憶體空間可以動態地調整;
3.集合的插入刪除操作可以不移動大量元素;
4.部分支援下標訪問,部分不支援;
5.集合中的元素必須是引用資料型別;
toarray():object 將集合中的所有元素以陣列方式進行返回
add(object):boolean 向集合中新增元素
contains(object):boolean 判斷集合中是否有指定物件
remove(object):boolean 從集合中刪除指定的元素
isempty():boolean 判斷元素個數是否為0,不判斷null
clear():void 刪除集合中的所有元素。
用於遍歷集合中的所有元素
獲取迭代器
list.iterator():iterator 具體的迭代器一般是由實現類提供具體的實現
collection cc =
newarraylist()
;cc.
add(
123)
;cc.
add(
"abcd");
iterator it=cc.
iterator()
;while
(it.
hasnext()
)
list介面是collection介面的子介面。有序、允許重複
凡是使用下標引數的,要求下標必須在[0,list.size())
public
class
t11public
static
void
sort
(list
list)}}
}}
set介面是collection介面的子介面。無序、不允許重複[重複的元素會被覆蓋]
boolean add(e e);向集合中追加元素e物件,如果出現重複則後面覆蓋前面
如何判斷兩個元素相等?
潛規則:sun要求當兩個物件的equals為true時,hashcode值應該相等
而兩個物件的hashcode相等時,用equals比較不一定為true.
線性表與鍊錶
線性表線性表是最基本 最簡單 也是最常用的一種資料結構。優點 記憶體占用少,查詢快,增刪慢。增刪慢的原因是,在中間新增乙個元素,其他所有的元素需要向後挪。耗能高所以慢。陣列,佇列和棧。佇列 queue 一種特殊的線性表,先進先出 fifo 只能刪除表的前端,只能新增到表的尾端。棧 stack 一種運...
線性表 鍊錶
線性表的adt list.h 線性表的c 抽象類宣告 templateclass list 單鏈表節點的定義 link.h 單鏈表節點類的定義 template class link link link nextval null 鍊錶的實現宣告 成員函式的是實現 鍊錶的實現宣告 include st...
線性表 鍊錶
include include typedef int elemtype typedef struct node lnode,linklist linklist createlinklist1 頭插法 linklist createlinklist2 尾插法 void lengthlinklist ...