一、緒論
1.算法的時間複雜度取決於問題的規模和待處理數據的初態
2.計算機算法必須具備:有窮性、確定性、可行性,
3.從邏輯上把數據結構分爲線性結構和非線性結構兩大類
4.與數據的存儲結構無關的術語:棧
5.多型數據類型:多型就是數據元素的類型不確定,比如字符串。
6.單鏈表屬於存儲結構
7.抽象數據類型的定義只取決於他的一組邏輯特性,而與其在計算機內部的表現形式無關,即不論其內部結構如何變化,只要他的數學特性不變,都不影響其外部使用
二、線性表
1.存儲密度大是順序存儲結構的一個優點
2.某線性表中最常用的操作是在最後一個元素之後插入一個元素和刪除第一個元素,則採用僅有尾指針的單循環鏈表存儲方式最節省運算時間
3.設一個鏈表最常用的操作是在末尾插入結點和刪除尾結點,則選用帶頭結點的雙循環鏈表最節省時間。
4.線性表既可以用順序存儲結構表示也可以用鏈式存儲結構表示
5.根據指針的連接方式,鏈表可以分爲動態鏈表和靜態鏈表
6.數據元素及直接後繼的存儲位置(地址)組成一個數據元素的存儲結構,稱爲:節點
7.頭結點:在單鏈表開始結點之前增設一個類型相同的結點
三、棧和隊列
1.、棧是實現過程和函數等子程序所必需的結構
2.採用鏈接方式存儲的隊列,在進行刪除操作時,鏈頭鏈尾指針都可能需要修改
3.隊列邏輯上是一個下端和上端既能增加又能減少的線性表。//這句話是對的,因爲這裏說的是邏輯上而不是實質上,即可以當作雙向隊列處理。
4.消除遞歸不一定需要使用棧//比如尾遞歸的消除
5.在循環隊列下,通常採用“犧牲一個存儲單元”或“作標記”的方法解決“隊滿”和“隊空”的判定問題。
6.由於棧只在棧頂操作,所以鏈棧通常不設頭結點
7.一個函數在結束本函數之前,直接或間接調用函數自身,稱爲遞歸。
六、樹和二叉樹
1.樹的根節點是1(這是一個矛盾的定義。。個人理解爲,當樹爲空樹的時候,不定義根節點概念)
2.一棵哈夫曼樹的帶權路徑長度等於其中所有分支結點的權值之和。//這句話是錯的,因爲這裏說的是分支結點而不是葉子結點
3.在中序線索二叉樹中,每一非空的線索均指向其祖先結點。(沒弄懂)
七、圖
1.n個頂點的強連通圖最少有n條邊,比如一個環
1.1n個頂點的連通圖最少有n-1條邊,比如一個點/一條線
2.BFS樹的高度小於或不等於DFS樹的高度
3.1)普里姆算法的時間複雜度爲O(n2),與網中的邊無關,因此適用於求邊稠密的網的生成樹。
2)克魯斯卡爾算法恰恰相反,他的時間複雜度爲O(eloge)(e爲網中的邊數),因此它相對於普里姆算法而言,適合於求邊稀疏的網的最小生成樹。
八、查找:
1.在各種查找方法中,平均查找長度與結點個數n無關的查法方法是哈希表查找法