這個作業屬於哪個課程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/
這個作業要求在哪裡 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK07
這個作業的目標 陣列與連結串列、基於陣列和基於連結串列實現資料結構、無序表
作業正文 https://www.cnblogs.com/rockytyh/p/18538402
教材學習內容總結
陣列與連結串列
陣列:是一種連續儲存的資料結構,具有固定大小,元素在記憶體中連續排列。透過索引可以快速訪問元素,但插入和刪除操作可能比較複雜,因為需要移動大量元素(尤其是在陣列中間插入或刪除)。例如,若要在一個已排序的陣列中插入一個新元素,可能需要將插入位置之後的所有元素向後移動一位。
連結串列:由一系列節點組成,每個節點包含資料和指向下一個節點的指標。連結串列的大小可以動態變化,插入和刪除操作相對容易,只需修改相關節點的指標即可。但查詢元素通常需要遍歷連結串列,時間複雜度較高。
基於陣列與連結串列實現資料結構
基於陣列實現:可以用於實現棧、佇列等資料結構。例如,棧可以用陣列來實現,透過一個指標指向棧頂元素,入棧和出棧操作可以透過修改指標和相應的陣列元素來完成。
基於連結串列實現:同樣可用於實現棧、佇列,而且在實現更復雜的資料結構如樹、圖時也有廣泛應用。例如,二叉樹可以用連結串列來表示,每個節點包含資料、左子節點指標和右子節點指標。
無序表與有序表
無序表:資料元素沒有特定順序,在實現上可以使用陣列或連結串列。插入操作相對簡單,只需將元素新增到合適位置(如連結串列末尾或陣列的下一個可用位置)。查詢和刪除操作可能需要遍歷整個列表。
有序表:資料元素按照特定的順序(如升序或降序)排列。插入操作需要在合適的位置插入元素以保持順序,可能涉及到元素的移動(陣列情況)或指標修改(連結串列情況)。查詢操作可以利用順序性更快地找到目標元素(如二分查詢法可用於有序陣列)。
教材學習中的問題和解決過程
問題1:在基於連結串列實現棧的資料結構中,入棧和出棧操作的時間複雜度是多少?
答案1:在基於連結串列實現棧時,入棧操作只需要在連結串列頭部插入一個節點,時間複雜度為 O(1)。出棧操作也只需要刪除連結串列頭部的節點,同樣時間複雜度為 O(1)。
因為連結串列的插入和刪除操作在頭部進行時,只需要修改指標,不需要移動大量元素,所以時間複雜度較低。
問題2:在學習資料結構的具體實現,如連結串列實現列表或者二叉樹的節點結構時,難以理解程式碼中的指標操作或者節點之間的關聯方式。
答案2:編寫簡單的函式,分別使用值傳遞和引用傳遞的方式傳遞引數,在函式內部對形參進行操作,然後觀察實參的變化情況。透過詳細分析程式碼執行過程中的變數值和記憶體地址變化來理解引數傳遞機制。
# 學期2024-2025-1 學號20241416《計算機基礎與程式設計》第7周學習總結
相關文章
- 2024-2025-1 20241416《計算機基礎與程式設計》第6周學習總結計算機程式設計
- # 學期(2024-2025-1) 學號(20241420) 《計算機基礎與程式設計》第10周學習總結計算機程式設計
- # 學期2024-2025-1 學號20241405《計算機基礎與程式設計》第10周學習總結計算機程式設計
- # 學期2024-2025-1 學號(20241405) 《計算機基礎與程式設計》第8周學習總結計算機程式設計
- 學期2024-2025-1 學號20241424 《計算機基礎與程式設計》第8周學習總結計算機程式設計
- 學期2024-2025-1 學號20241306 《計算機基礎與程式設計》第8周學習總結計算機程式設計
- 學期2024-2025-1 學號20241306《計算機基礎與程式設計》第9周學習總結計算機程式設計
- 學期2024-2025-1 學號20241424 《計算機基礎與程式設計》第6周學習總結計算機程式設計
- 學期2024-2025-1 學號20241424 《計算機基礎與程式設計》第4周學習總結計算機程式設計
- 學期(2024-2025-1) 學號20241425 《計算機基礎與程式設計》第2周學習總結計算機程式設計
- 學期2024-2025-1 學號20241323《計算機基礎與程式設計》第1周學習總結計算機程式設計
- # 學期(如2024-2025-1) 學號20241405 《計算機基礎與程式設計》第2周學習總結計算機程式設計
- 2024-2025-1 20241416 《計算機基礎與程式設計》第九周學習總結計算機程式設計
- 2024-2025-1學期 20241427 《計算機基礎與程式設計》第3周學習總結計算機程式設計
- # 學期(如2024-2025-1) 學號(如:20241402) 《計算機基礎與程式設計》第2、3周學習總結計算機程式設計
- 學期:2024-2025-1 學號:20241303 《計算機基礎與程式設計》第九周學習總結計算機程式設計
- 學期:2024-2025-1 學號:20241303 《計算機基礎與程式設計》第七週學習總結計算機程式設計
- 學期2024-2025-1 學號20241317 《計算機基礎與程式設計》第七週學習總結計算機程式設計
- 學期(2024-2025-1) 學號(20241420) 《計算機基礎與程式設計》第六週學習總結計算機程式設計
- 學期 2024-2025-1 學號 20241403 《計算機基礎與程式設計》第六週學習總結計算機程式設計
- 學期(如2024-2025-1) 20241304 《計算機基礎與程式設計》第2周學習總結計算機程式設計
- 學期2024-2025-1 學號20241317 《計算機基礎與程式設計》第十一週學習總結計算機程式設計
- 學期:2024-2025-1 學號:20241303 《計算機基礎與程式設計》第十一週學習總結計算機程式設計
- 學期2024-2025-1 學號20241317 《計算機基礎與程式設計》第四周學習總結計算機程式設計
- # 學期(如2024-2025-1) 學號(如:20241402) 《計算機基礎與程式設計》第六週學習總結計算機程式設計
- 2024-2025-1 學號20241315《計算機基礎與程式設計》第十週學習總結計算機程式設計
- 2024-2025-1 學號20241315《計算機基礎與程式設計》第八週學習總結計算機程式設計
- 2024-2025-1 學號 20241301 《計算機基礎與程式設計》第七週學習總結計算機程式設計
- 2024-2025-1 學號20241315《計算機基礎與程式設計》第七週學習總結計算機程式設計
- #2024-2025-1學號20241309《計算機基礎與程式設計》第六週學習總結計算機程式設計
- #2024-2025-1學號20241309《計算機基礎與程式設計》第三週學習總結計算機程式設計
- 2024-2025-1 學號:20241303 《計算機基礎與程式設計》第三週學習總結計算機程式設計
- #2024-2025-1學號20241309《計算機基礎與程式設計》第二週學習總結計算機程式設計
- 2024-2025-1 學號20241315《計算機基礎與程式設計》第一週學習總結計算機程式設計
- #2024-2025-1學號20241309《計算機基礎與程式設計》第一週學習總結計算機程式設計
- 2024-2025-1 20241425 《計算機基礎與程式設計》第10周學習總結計算機程式設計
- 2024-2025-1 20241425 《計算機基礎與程式設計》第8周學習總結計算機程式設計
- 2024-2025-1 20241320 《計算機基礎與程式設計》第8周學習總結計算機程式設計