2021-2022-1 20211424 《資訊保安專業導論》第七週學習總結
2021-2022-1 20211424《資訊保安專業導論》第七週學習總結
作業所屬課程:https://edu.cnblogs.com/campus/besti/2021-2022-1fois
作業要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07
作業目標:
- 陣列與連結串列
- 基於陣列和基於連結串列實現資料結構
- 無序表與有序表
- 樹
- 圖
- 子程式與引數
作業正文:https://www.cnblogs.com/weidaixdrx/p/15500477.html
教材學習內容總結
#抽象資料型別(Abstract Data Type,ADT)
是屬性(資料和操作)明確的與特定現實分離的容器(container)。
也就是說,我們知道操作和它們所做的事情,但是不知道操作是怎麼實現的。
#棧(Stack):
是一種抽象複合結構。
處理型別為先進後出(LIFO)。
#佇列(Queue):
也是抽象結構。
處理型別為先進先出(FIFO)。
#列表(List):
不要把它誤認為陣列,陣列是內嵌結構,列表是抽象結構。
它可以被形象化為
鏈式結構(linked structure)
它以節點概念為基礎,一個節點由兩部分構成:使用者的資料和指向列表的下一個節點的連結或指標。
- 無序表,順序不重要,專案隨意放入其中。
- 有序表,除了第一個專案之外所有專案都存在某種排序關係;除了最後一個專案,所有的專案都有著相同的關係。
#樹(tree):
可以表示更復雜的關係。
- 二叉樹(binary tree)
是一種抽象結構。
每個節點可以有兩個後繼節點,叫做“子女”,頭部叫“根”。
如果一個節點沒有子女,那它叫“樹葉”,即“葉節點(leaf node)”。
- 二叉檢索樹
數類似於無序列表,二叉檢索樹就像已排序的列表,節點之前存在語義排序。
1.在二叉檢索樹中搜索:
info(current)指的是節點中的資料,left/right(current)指的是左/右子樹的根節點。
樹的形狀是由專案插入樹的順序決定的。
2.構造二叉檢索樹:
insert(tree,item)
3.輸出二叉檢索樹中的資料
要輸出根的值,必須先輸出它的左子樹中的所有值,然後輸出它的右子樹中的所有值。
二叉檢索樹是和列表具有同樣功能的物件,他們的區別在於操作的有效性,而行為是相同的。
#圖
圖中一個節點至多隻有一個指向它的節點(父母),去掉這種約束,就得到了圖(graph)。
圖由一組節點和連線節點的線段構成,節點叫頂點(vertex),線段叫邊(弧)(edge(arc)。
無向圖(undirected graph):邊沒有方向。
有向圖(directed graph(digraph)):邊從一個頂點指向另一個頂點。
- 建立圖
與其他容器不同,圖中定義的演算法可以解決實際的問題。
- 圖演算法
三種經典圖搜尋演算法。
1.深度優先搜尋
喜愛的航線。
用棧來儲存訪問的頂點。
2.廣度優先搜尋
最少的停頓次數。
用佇列來儲存元素的順序。、
3.單元最短路搜尋
優先佇列(priority queue):被檢索的元素是在佇列中擁有最高優先度的元素。
#子程式
資訊的交流是通過引數列表的概念實現的。
- 引數傳遞
引數列表(parameter)是子程式要使用的識別符號或值的列表,它放置在子程式名後面的括號中。
- 值參(value parameter)與引用引數(reference parameter)
傳遞引數的基本方式有兩種,通過值傳遞或通過引用(或地址)傳遞。
要訪問一個引用引數,子程式必須訪問留言板上地址的內容;要訪問值參,只需訪問留言板內容。
教材學習過程中的問題和解決過程
問題一:陣列與連結串列的區別與各自特點不太清晰。
解決過程:在CSDN網站搜尋到以下比較明瞭的解釋:
(1)陣列在記憶體中開闢連續的一塊區域,如果一個數據要兩個記憶體單元,一組5個數據10個單元就夠了,無需標記其地址,因為陣列定義時候標頂了第一個原許的地址,其他四個都知道了。
連結串列可可以是連續的,也可以是不連續的,但一般都是不連續的,儘管在記憶體中是連續的,我們也不把他當作是連續的,而是把他當作是不連續的,因為如果把他當作是連續的,不如當作是陣列了,在某些情況下。一鏈5個數據,如果每個資料本身用2個記憶體單元,那麼10個單元是不夠的,因為每個資料都要表示出下個數據在哪裡,所以一個數據本身用2個單元,再用1個單元表示此鏈下一個資料在什麼地址。
各有用處。
(2)
程式碼除錯中的問題陣列中的資料在記憶體中的按順序儲存的,而連結串列是隨機儲存的!
要訪問陣列中的元素可以按下標索引來訪問,速度比較快,如果對他進行插入操作的話,就得移動很多元素,所以對陣列進行插入操作效率很低!
由於連表是隨機儲存的,連結串列在插入,刪除操作上有很高的效率(相對陣列),如果要訪問連結串列中的某個元素的話,那就得從連結串列的頭逐個遍歷,直到找到所需要的元素為止,所以連結串列的隨機訪問的效率就比陣列要低和解決過程。
程式碼除錯中的問題和解決過程
問題一:在計算三位自冪數與四位自冪數時無法直接用一串程式碼表示出。
解決過程:寫兩段程式碼分別進行運算
上週考試錯題總結
無
學習進度條
程式碼 | 部落格 | 學習時長 | 成長 | |
目標 | 5000 | 30 | 400 | |
一 | 0/0 | 2/2 | 5/5 | |
二 | 100/100 | 3/5 | 11/16 | |
三 | 200/300 | 1/6 | 8/24 | |
四 | 200/500 | 2/8 | 10/34 | |
五 | 300/800 | 4/12 | 15/49 | |
六 | 500/1300 | 3/15 | 13/62 | |
七 | 400/1700 | 4/19 | 11/73 |
計劃學習時間:12
實際學習時間:11
改進情況:學習效率有所提高,要繼續加油!