《大話資料結構》

2021-07-24 05:45:54 字數 1015 閱讀 9732

順序儲存方式 

線性表的順序儲存結構,說白了,就和剛才的例子一樣,就是在記憶體中找了塊地兒,通過佔位的形式,把一定記憶體空間給佔了,然後把相同資料型別的資料元素依次存放在這塊空地中。既然線性表的每個資料元素的型別都相同,所以可以用c語言(其他語言也相同)的一維陣列來實現順序儲存結構,即把第乙個資料元素存到陣列下標為0的位置中,接著把線性表相鄰的元素儲存在陣列中相鄰的位置二我那同學佔座時,如果圖書館裡空座很多,他當然不必一定要選擇第一排第乙個位子,而是可以選擇風水不錯、美女較多的地兒。找到後,放乙個書包在第乙個位置,就表示從這開始,這地方暫時歸我了二為了建立乙個線性表,要在記憶體中找一塊地,於是這塊地的第乙個位置就非常關鍵。它是儲存空間的起始位置。接著,因為我們一共九個人,所以他需要佔九個座。線性表中,我們沽算這個線性表的最大儲存容景建立乙個陣列,陣列的長度就是這個最大儲存容最。可現實中,我們宿舍總有那麼兒個不是很好學的人,為了遊戲,為了戀愛,就不去圖書館自習了。假設我們九個人,去了六個,真正被使用的座位也就只是六個,另三個是空的。同樣的,我們己經有了起始的位置,也有了最大的容景,是我們可以在裡面增加資料了。隨著資料的插入,我們線性表的長度開始變大,不過線性表的當前長度不能超過儲存容8即陣列的長度口想想也是,如果我們有十個人,只佔了九個座,自然是坐不一樣的。來看線性表的順序儲存的結構**。

這裡,我們就發現描述順序儲存結構需要三個屬性:

·儲存空間的起始位置:陣列data,它的儲存位置就是儲存空間的儲存位置口

·線性表的最大儲存容雖陣列長度maxsize。

·線性表的當前長度:length、

資料長度與線性表長度區別

注意哦,這裡有兩個概念 陣列的長度 和 線性表的長度 需要區分一下。

陣列的長度是存放線性表的儲存空間的長度,儲存分配後這個量是一般是不變的。有個別同學可能會問,陣列的大小一定不可以變嗎?我怎麼看到有書中談到可以動態分配的一維陣列。是的,一般高階語言,比如c. vb, c++都可以用程式設計手段實現動態分配陣列,不過這會帶來效能上的損耗。線性表的長度是線性表中資料元素的個數,隨著線性表插人和刪除操作的進行,這個星是變化的。在任意時刻,線性表的長度應該小於等於陣列的長度。

《大話資料結構》

函式的漸進增長 我們現在來判斷一下,兩個演算法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 ...

《大話資料結構》

線性表 線性表,從某種就能感覺到,是具有像線一樣的性質的表。在廣場上,有很多人分散在各處,當中有些是小朋友,可也有很多大人,甚至還有不少寵物,這些小朋友的資料對整個廣場人群來說,不能算是線性表的結果。但像剛才提到的那樣,乙個班級的小朋友,乙個跟著乙個排著隊,有乙個打頭,有乙個收尾,當中的小朋友,每乙...