表示法:
(d,s,p)
d:資料物件
s:d上的關係集
p:對d的基本操作集
adt格式
adt 抽象資料型別名adt 抽象資料型別名
基本操作的格式:
基本操作名(參數列)
初始條件:《初始條件描述》
操作結構:《操作結果描述》
原子型別的值是不能分解的,如c中基本資料型別
結構型別的值是可分解的,是由結構型別和原子型別聚合成的
而結構型別中按照值的成分是不是可變又分成:固定聚合型別&可變聚合型別
固定聚合型別如複數,它是由兩個實數組成
可變聚合型別如字串,它是由n個char型別字元組成
順序映像就如同陣列,是一塊連續的空間,由頭指標和尾指標就可以指定這段空間
非順序映像如同鍊錶,是n塊不連續空間,每塊空間有乙個指標指向下乙個空間(也有雙向指標)
首先,我們看看什麼是前驅後繼
前驅:某資料元素在此資料型別中的上乙個資料元素
後繼:
某資料元素在此資料型別中的下乙個資料元素
如果乙個資料型別中所有資料元素沒有前驅也沒有後繼,那麼每個元素之間就沒沒有關聯,這種結構稱之為集合;
如果每個元素都有乙個前驅和乙個後繼(其實這麼說不對,因為第乙個元素沒有前驅,最後乙個元素沒有後繼),那麼他們就形成了乙個線性的結構,稱之為線性表
再如果每個元素都有乙個前驅,但是有多個後繼(這麼說也不對,因為第乙個元素是沒有前驅,而葉子節點是沒有後繼),那麼他們就成了乙個樹
最後,n個前驅n個後繼的話,就形成了圖。
我們的資料結構主要就是以前驅後繼的形式去分類學習的,再輔以順序映像和非順序映像的表示就衍生了更多的資料結構,這個接下來會逐步講述。
演算法是對特定問題求解的步驟的描述,是指令的有限序列。
[1] 有窮性
兩點含義:
(1) 演算法必須是在有窮步後結束,如無限迴圈就不是有窮的。
(2) 每步演算法必須是在有窮時間內完成
[2] 確定性
兩點含義:
(1) 每一條指令都不能有二義性
(2) 相同的輸入只能有相同的輸出
[3] 可行性
演算法中描述的操作都能通過有限次基本運算實現
[4] 輸入
乙個演算法有0個以上輸入
[5] 輸出
乙個演算法有1個以上輸出
[1] 正確性
四個層次:
a.不含語法錯誤
b.對於幾組輸入的輸出正確
c.程式對於精心選擇的輸入能得出正確的輸出
d.程式對於一切合法輸入都有正確的輸出
[2] 可讀性
演算法**可被人閱讀
[3] 健壯性
**在面對異常時處理
[4] 效率與低儲存量需求
演算法的時間和空間代價
演算法的效率從耗費的時間和空間上劃分:
[1] 時間複雜度
時間複雜度一般使用大o表示法,它表示演算法的時間效率的下限,按照函式增長趨勢又分為常量階、線性階、平方階、對數階、指數階(演算法的效率逐漸降低,複雜度逐漸公升高)。
[2] 空間複雜度
指的是演算法執行期間占用的記憶體大小,一般也用大o表示法表示最差情況。
資料結構小白系列之資料結構概述
資料結構,是資料的組織形式,包括資料元素本身以及資料元素之間的關係,公式可表示為data structure 其中d表示資料,r表示關係。資料結構具有邏輯結構和物理結構。邏輯結構是資料和資料之間的邏輯關係,實際就是它們之間的位置關係。比如資料a和資料b,資料a和資料b是相鄰著儲存著,資料a儲存在資料...
考研系列之資料結構 線性表概述
1.腦圖 2.表示方法 按照資料結構概述所說,線性表有兩種表示方法分別是順序表示和鏈式表示,鍊錶就是鏈式表示的典型。我們知道鏈式表示是分配了n塊記憶體空間,可以認為彼此不連續,所以不能用偏移量去定位每個元素。下面就先說最簡單的 單向鍊錶 如果每個資料元素能有乙個指標指向下乙個元素的話,那麼只需要知道...
考研資料結構
一 考研中的變數型別 1 基本型別 int float char 2 指標型別 3 結構體型 陣列,結構體 4 void型 考研中 定義無返回值函式。二 控制語句 1 判斷語句if 做決策 2 迴圈語句 做重複的事 for while 講講break與continue break結束整個迴圈 con...