一、數組
數組,即線性表的順序表示,指的是用一組地址連續的存儲單元依次存儲線性表的數據元素,其特點是邏輯上相
鄰的數據元素,其物理次序也是相鄰的。
假設線性表的每個元素需佔用k個存儲單元,並以所佔的第一個單元的存儲地址作爲數據元素的存儲起始位置。線性
表中第i+1個元素的存儲位置LOC(ai+1)和第i個數據元素
的存儲位置LOC(ai)之間滿足下列關係 LOC(ai+1)=LOC(ai)+1;優點:屬於隨機存取,可以通過下標訪問任一元素,時間複雜度O(1)。
靜態,從棧中分配空間,操作簡單方便。
不用爲表示結點間的邏輯關係而增加額外的存儲開銷,存儲密度高。
缺點:插入與刪除需要平均移動表中一半元,時間複雜爲O(n)。預先分配,會導致空間的閒置或溢出。
適用情況:表長變化不大,且能事先確定變化的範圍。很少進行插入或刪除操作,經常按元素序號訪問數據元素。二、鏈表
鏈表,即線性錶鏈式存儲結構,指的是用一組任意的存儲單元存儲線性表的數據元素(這組存儲單元可以是連續的,也可以是不連續的)。邏輯上相鄰的數據元素,其物理次序不一定是相鄰的。對於元素ai來說除了存儲其本身的信息之外,還需存儲一個指示其直接後繼的信息。即它包含兩個域,數據域和指針域。
優點:不需要移動元素,確定插入、刪除位置,時間複雜度爲O(1)。動態,從堆中分配,不會出現閒置和溢出想象。缺點:屬於順序存取,訪問一個元素,需要從頭結點開始,時間複雜度O(n)。需要藉助指針來體現元素間的邏輯關係,存儲密度低。
適用情況:長度變化較大。頻繁進行插入或刪除操作。
注:密度密度是指一個結點數據本身所佔的存儲空間和整個結點所佔的存儲空間之比。