1. 程式人生 > 其它 >2021-2022-1 20211424 《資訊保安專業導論》第七週學習總結

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

改進情況:學習效率有所提高,要繼續加油!