順序儲存表示是將資料元素存放於乙個連續的儲存空間中,實現順序訪問或(按下標)直接訪問。它的儲存效率高,訪問速度快。但它的空間大小一經定義,在程式整個執行期間不會發生改變,因此,不易擴充。同時,由於在插入或刪除時,為保持原有次序(沒有規定元素進棧順序
),平均需要移動一半(或近一半)元素,修改效率不高。
鏈結儲存表示的儲存空間一般在程式的執行過程中動態分配和釋放,且只要儲存器中還有空間,就不會產生儲存溢位的問題。同時在插入和刪除時不需要保持資料元素原來的物理順序,只需要保持原來的邏輯順序,因此不必移動資料,只需修改它們的鏈結指標,修改效率較高。但訪問表中的資料元素時,只能循鏈順序訪問,因此訪問效率不高。
1順序表和煉表的時間效能比較
所謂時間效能是指實現基於這種儲存結構的基本運算(即演算法)的時間複雜度。
像取出線性表中第 i 個元素這樣的按位置隨機訪問的操作,使用順序表更快一些;取前趨和後繼結點的操作在順序表中可以很容易調整當前的位置向前或向後,因此這兩種操作的時間為 o (1) ;相比之下,單鏈表不能直接訪問上述的元素,按位置訪問只能從表頭開始,直到找到那個特定的位置,所需要的平均時間為 o ( n ) 。
給出指向鍊錶中某個合適位置的指標後,插入和刪除操作
2順序表和煉表的空間效能比較
所謂空間效能是指這種儲存結構所占用的儲存空間的大小。
首先定義結點的儲存密度。
順序表中每個元素的儲存密度為 1 ,沒有浪費空間;而鍊錶的每個結點除了存放資料元素,還要附加乙個指示元素之間邏輯關係的指標,如果資料域佔據的空間較小,則鍊錶的結構性開銷就占去了整個儲存空間的大部分,因而從結點的儲存密度上講,順序表的儲存空間利用率較高。
由於順序表需要預分配一定長度的儲存空間,如果事先不能明確知道線性表的大致長度,則有可能對儲存空間預分配得過大,致使在程式執行過程中很大一部分的儲存空間得不到充分利用,而造成浪費;若估計得過小,又將造成頻繁地進行儲存空間的再分配。而鍊錶的顯著優點之一就是其儲存分配的靈活性,不需要為鍊錶預分配空間,只要有可用的記憶體空間分配,鍊錶中的元素個數就沒有限制。
作為一般規律,當線性表中元素個數變化較大或者未知時,最好使用鍊錶實現;而如果使用者事先知道線性表的大致長度,使用順序表的空間效率會更高。
總之,線性表的順序實現和鍊錶實現各有其優缺點,不能籠統地說哪種實現更好,只能根據實際問題的具體需要,並對各方面的優缺點加以綜合平衡,才能最終選定比較適宜的實現方法。
線性表(順序表 鍊錶)
在程式中,經常需要將一組 通常是同為某個型別的 資料元素作為整體管理和使用,需要建立這種元素組,用變數記錄他們傳進傳出函式等。一組資料中包含的元素個數可能發生變化。對於這種需求,最簡單的解決方案就是將這樣一組元素看成乙個序列,用元素在序列裡的位置和順序,表示實際應用中的某種有意義的資訊,或者表示資料...
線性表的順序儲存 順序表
一丶順序表 概念 採用順序儲存的線性表稱為順序表,順序表中邏輯上相鄰的資料元素在物理儲存位置上也是相鄰的。二丶定義順序表 用一維陣列來描述順序表的資料儲存。由於順序表有插入刪除等操作,即順序表的表長會發生改變。因此是陣列長度足夠大,加入整型變數length來記錄此時線性表中資料元素的個數,順序表的結...
線性表的順序儲存 順序表
線性表,簡稱表,是n n 0 個具有相同型別的資料元素的有限序列。1 線性表是乙個相當靈活的資料結構,對線性表的資料元素不僅可以進行訪問訪問,還可以進行插入和刪除等操作。2 a1稱為第1個元素,an稱為最後乙個元素,任意一對相鄰的資料元素a i 1 和a i 1序偶關係 且a i 1 稱為a i 的...