順序表:
線性表的順序存儲結構。java描述爲數組.
優點:查詢快,直觀
缺點:增刪慢,固定長度不靈活,造成預留空間浪費。
時間複雜度:
插入:最好情況O(1),最壞情況O(n),平均O(n)。
刪除:O(n)
查找:O(1)
java提供了類java.util.ArrayList,相當於可變數組,但能存儲不同類型的對象
單鏈表
線性表的鏈式存儲結構,java描述爲類
public class Lnode{
public char data;//數據域
public Lnode next;//指針域,存放當前結點的後繼結點的地址
}
優點:增刪快,靈活
缺點:查詢慢,因有指針域浪費空間
時間複雜度:
插入:在某結點之後O(1),在某結點之前O(n)
刪除:O(1)
查找:O(n)
雙向鏈表
public class Dulnode{
public char data;//數據域
public Dulnode next;
public Dulnode prior;
}
優點:雙向查找
缺點:空間開銷大
此外還有循環鏈表,雙向循環鏈表
java提供了鏈表類java.util.LinkedList
棧
僅在表的一端進行插入和刪除的線性表(彈夾)
隊列
在表的一端進行插入在另一端進行刪除的線性表(排隊)
查找性能取決於規模和關鍵字的位置
順序查找 缺點效率低,優點對錶中存儲元素沒有要求,線性鏈表只能用順序查找
折半查找 條件數據元素按關鍵字升序或降序