線性表
線性表,從某種就能感覺到,是具有像線一樣的性質的表。在廣場上,有很多人分散在各處,當中有些是小朋友,可也有很多大人,甚至還有不少寵物,這些小朋友的資料對整個廣場人群來說,不能算是線性表的結果。但像剛才提到的那樣,乙個班級的小朋友,乙個跟著乙個排著隊,有乙個打頭,有乙個收尾,當中的小朋友,每乙個都知道他前面乙個是誰,他後面乙個是誰,這樣猶如一根線把他們串聯起來了,就可以稱之為線性表。
線性表(list):零個或多個資料元素的有限序列。
這裡需要強調幾個關鍵的地方:首先它是乙個序列,也就是說元素之間是有順序的,若元素存在多個,則第乙個元素無前驅,最後乙個元素無後繼。其他每個元素都有且只有乙個前驅和後繼。如果乙個小朋友去拉兩個小朋友後面的衣服,那就不可以排成一隊了;同樣,如果乙個小朋友後面的衣服被兩個甚至多個小朋友拉扯這其實是在打架,而不是有序排隊。然後,線性表強調是有限的,小朋友班級人數是有限的,元素個數當然也是有限的。事實上,在計算機中處理的物件都是有限的,那種無限的數列,只存在於數學的概念中。如果用數學語言來進行定義,可如下:若將線性表幾位(a1,···,a i-1,a i ,a i+1,···,a n)則表中 a i-1 領先於 a i,a i 領先於 a i+1,稱 a i-1 是 a i的直接前驅元素,a i+1 是 a i 的直接後繼元素。當i = 1,2,···, n - 1時, a i 有且僅有乙個直接後繼,當 i = 2,3,···, n 時, a i 有且僅有乙個直接前驅。所以線性表元素的個數n(n >= 0)定義為線性表的長度,當n = 0時,稱為空表。在非空表中的每個資料元素都有乙個確定的位置,如 a1 是第乙個資料元
《大話資料結構》
函式的漸進增長 我們現在來判斷一下,兩個演算法a和b哪個更好。假設兩個演算法的輸入規模都是n,演算法a要做2n 3次操作,你可以理解為先有乙個n次的迴圈,執行完成後,再有乙個n次迴圈,最後有三次賦值或運算,共2n 3次操作。演算法b要做3n 1次操作,你覺得它們誰更快呢 準確來說,答案是不一定的 當...
《大話資料結構》
常見的時間複雜度 常見的時間複雜度如下圖所示 常用的時間複雜度所耗費的時間從小到大依次是 o 1 o logn o n o nlogn o n o n 三次方 o 2 n次方 o n!o n n次方 我們前面已經談到了 o 1 常數階 o logn 對數階 o n 線性階 o n 平方階等,至於o ...
《大話資料結構》
順序儲存方式 線性表的順序儲存結構,說白了,就和剛才的例子一樣,就是在記憶體中找了塊地兒,通過佔位的形式,把一定記憶體空間給佔了,然後把相同資料型別的資料元素依次存放在這塊空地中。既然線性表的每個資料元素的型別都相同,所以可以用c語言 其他語言也相同 的一維陣列來實現順序儲存結構,即把第乙個資料元素...