學期(如2024-2025-1) 學號(如:20241403) 《計算機基礎與程式設計》第7周學習總結
作業資訊
這個作業屬於哪個課程 | <班級的連結>(如2024-2025-1-計算機基礎與程式設計) |
---|---|
這個作業要求在哪裡 | <作業要求的連結>(如2024-2025-1計算機基礎與程式設計第一週作業) |
這個作業的目標 | 陣列與連結串列 基於陣列和基於連結串列實現資料結構 無序表與有序表 樹 圖 子程式與引數 |
作業正文 | https://www.cnblogs.com/chenqiqi/p/18537314 |
教材學習內容總結
一、陣列與連結串列
- 陣列:
• 是一組具有相同資料型別的元素的集合,在記憶體中連續儲存。
• 可以透過索引快速訪問特定元素,但插入和刪除元素可能需要移動大量元素,效率較低。
• 適用於需要頻繁隨機訪問元素的場景。
- 連結串列:
• 由一系列節點組成,每個節點包含資料和指向下一個節點的指標。
• 插入和刪除元素相對容易,只需修改指標即可,但隨機訪問元素需要遍歷連結串列,效率較低。
• 適用於頻繁進行插入和刪除操作的場景。
二、基於陣列和連結串列實現資料結構
- 基於陣列實現:
• 可以實現棧、佇列等資料結構。例如,用陣列實現棧時,可以利用陣列的一端作為棧頂,進行入棧和出棧操作。
• 優點是實現簡單,隨機訪問快;缺點是可能浪費空間,插入和刪除效率低。
- 基於連結串列實現:
• 同樣可以實現棧、佇列等資料結構。例如,用連結串列實現佇列時,連結串列的一端作為隊首,另一端作為隊尾,進行入隊和出隊操作。
• 優點是靈活,插入和刪除效率高;缺點是實現相對複雜,隨機訪問慢。
三、無序表與有序表
- 無序表:
• 表中的元素沒有特定的順序。
• 插入元素時,只需將元素新增到合適的位置即可,無需考慮順序。
• 查詢元素時,需要遍歷整個表,效率較低。
- 有序表:
• 表中的元素按照一定的順序排列。
• 插入元素時,需要找到合適的位置插入,以保持順序。
• 查詢元素時,可以利用順序進行高效的查詢,如二分查詢等。
四、樹
- 定義與結構:
• 樹是一種非線性資料結構,由節點和邊組成。
• 最頂層的節點稱為根節點,沒有子節點的節點稱為葉節點。
• 節點之間的關係可以用父子關係來描述。
- 二叉樹:
• 每個節點最多有兩個子節點的樹。
• 可以進行遍歷操作,如前序遍歷、中序遍歷和後序遍歷。
• 常用於搜尋和排序等場景。
五、圖
- 定義與結構:
• 圖是由頂點和邊組成的非線性資料結構。
• 邊可以有方向和權重。
• 圖可以分為有向圖和無向圖。
- 應用場景:
• 常用於網路路由、社交網路分析、地圖導航等領域。
六、子程式與引數
- 子程式:
• 也稱為函式或方法,是一段可以獨立執行的程式碼塊。
• 可以接受引數,進行特定的操作,並返回結果。
- 引數傳遞:
• 形參是在定義子程式時使用的引數,僅在子程式內部有效。
• 實參是在呼叫子程式時傳遞給子程式的具體數值或變數。
• 引數傳遞可以是值傳遞或引用傳遞。
教材學習中的問題和解決過程(先問 AI)
- 問題1:在基於連結串列實現棧的資料結構中,入棧和出棧操作的時間複雜度是多少?
- 問題1解決方案:在基於連結串列實現棧時,入棧操作只需要在連結串列頭部插入一個節點,時間複雜度為 O(1)。出棧操作也只需要刪除連結串列頭部的節點,同樣時間複雜度為 O(1)。
因為連結串列的插入和刪除操作在頭部進行時,只需要修改指標,不需要移動大量元素,所以時間複雜度較低。
基於AI的學習
程式碼除錯中的問題和解決過程
- 問題1:用pow(n,1/3)表示=n的三分之一次方,結果確實一直是1
- 問題1解決方案:應改為pow(n,1.0/3.0)或pow(n,1.0/3)或pow(n,1/3.0)因為1/3的結果是0,在c語言中1和3都是整形,結果也應該是整形,所以是0;當把其中一個改為浮點數後結果也就不再是整形了。
其他(感悟、思考等,可選)
我有時候還是會犯一些語法錯誤,這就需要多加練習來彌補。學習c語言是一個循序漸進地過程,須要不斷積累。
有些題目須要很強的數學能力,這方面我還是有所欠缺。
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 200/200 | 2/2 | 20/20 | |
第二週 | 300/500 | 2/4 | 18/38 | |
第三週 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 |