DS第3章學習小結
- 你對本章內容的小結
- 完成作業或實踐時解決困難的經驗分享
- 這段時間,你參考了哪些值得向大家分享的資料?每一項推薦都請說明推薦理由及列出相關鏈接(或書目名稱,具體頁碼)
- 目前學習過程中存在的困難,待解決或待改進的問題
- 上次博客確定的目標達到了嗎?如果沒達到,請分析原因
- 接下來的目標
一、你對本章內容的小結
第2章主要學習的棧和隊列
棧是一種後進先出(LIFO)的線性表,而隊列是一種先進先出(FIFO)的線性表
棧只允許對棧頂進行操作,而隊列只允許對隊尾和隊頭進行操作
棧和隊列的引入簡化了程序設計的問題,劃分了不同的關註層次,使思考範圍縮小了,而不用像數組那樣關註下標等的細節問題
棧的基本操作有:
InitStack(&S)、StackEmpty(S)、GetTop(S)、Push(&S,e)、Pop(&S)
隊列的基本操作有:
InitQueue(&Q)、QueueEmpty(Q)、GetHead(Q)、EnQueue(&Q,e)、DeQueue(&Q)
還學了棧與遞歸,遞歸負責解決本層問題,一般的算法框架為
void p(參數表)
{
if (遞歸終止條件) 直接求解;// 遞歸終止
else p(較小的參數);// 遞歸求解
}
遞歸的優點:結構清晰,程序易讀
缺點:時間開銷大
二、完成作業或實踐時解決困難的經驗分享
‘\b’代表退格但是和按下退格鍵不一樣,它只是移動當前的光標向前移動一位,所以在pta做題時
不可以像我下面這樣,若是這樣做了,答案肯定是錯的!!!
1 for(int i=0; i<n; i++) 2 { 3 cout<<data[i]<<" "; 4 } 5 cout<<‘\b‘;
三、這段時間,你參考了哪些值得向大家分享的資料?每一項推薦都請說明推薦理由及列出相關鏈接(或書目名稱,具體頁碼)
https://www.cnblogs.com/wft1990/p/5861529.html
這個博客介紹了各種輸入流的用法和不同,有時候做題時出現 “以......標誌著輸入結束” 可能會用到。
四、目前學習過程中存在的困難,待解決或待改進的問題
對一些算法進行具體實現的時候還是不太能得心應手,有時候寫的算法有點亂,也不夠結構化、層次化。
五、上次博客確定的目標達到了嗎?如果沒達到,請分析原因
達到了吧,老師給的高質量c++編程指南1~30頁看了,課程也基本聽懂了?
雖然那1~30頁說的都是平時打代碼時的一些很基礎的習慣,但我還是覺得很有用,寫程序規範化一點能使程序更容易讀嘛~
六、接下來的目標
以後的算法都要結構化,劃分不同的關註層次,盡量簡化程序設計的問題。
看老師給的高質量c++編程指南31~60頁。
DS第3章學習小結