20182310 第七週學習總結

20182310 2019-2020-1 《數據結構與面向對象程序設計》第七週學習總結

教材學習內容總結

1.鏈表實現棧
data存放數據點
next下一節點
存儲地址 數據域
單鏈表:只含一個指針域的鏈表 a-》
雙向鏈表:《-a-》
地址不必定連續
要用鏈表實現棧,就要操做鏈表的兩端。因此除了一個指向鏈表首元素的引用(稱爲head)以外,還須要跟蹤另外一個指向鏈表末元素的引用(稱爲tail),還須要一個整型變量count來跟蹤隊列中的元素數目。java

2.尾插法
Student temp = Head;
while(temp.next!=null){
temp=temp.next}
temp.next=node;
return head;
用一個臨時指針(不能影響頭指針,頭指針移動則垃圾回收)等於頭指針temp=temp。next 若爲null,找到了鏈表結尾,則指向新插入的對象node

3.頭插法:新對象指向首個元素,head指針賦給新對象,則新鏈表完成
node.next=Head;
Head =node;
return Head;
刪除:1.temp.next=temp.next.next
2.兩個指針,p.next=q.next
循環鏈表
雙向鏈表
棧與鏈表
top即爲head
4.漸進複雜度(時間/空間複雜度)
又稱爲算法的階,符號計爲O(),它和增加函數有關
linux

5.簡單選擇排序算法,快速排序
6.棧:棧是一種數據結構,特色和電梯類似,元素從頂部壓入棧中,先進去的元素後出來,後進去的元素先出來。棧中的元素能夠寫入,也能夠讀出。棧可用數組,鏈表兩種形式實現。
7.後綴表達式:用代碼實現計算後綴表達式的思路以下:
將表達式字符串用StringTokenizer分隔,單獨提取,若提出來的是數字,則壓入一個棧中,如果運算符,則從數字棧中彈出兩個數字,用這個運算符進行計算,結果再次壓入棧中。android

教材學習中的問題和解決過程

  • 問題1:不明白泛型是什麼且如何使用。
  • 問題1解決方案:全部泛型方法聲明都有一個類型參數聲明部分(由尖括號分隔),該類型參數聲明部分在方法返回類型以前(在下面例子中的)。
    每個類型參數聲明部分包含一個或多個類型參數,參數間用逗號隔開。一個泛型參數,也被稱爲一個類型變量,是用於指定一個泛型類型名稱的標識符。
    類型參數能被用來聲明返回值類型,而且能做爲泛型方法獲得的實際參數類型的佔位符。
    泛型方法體的聲明和其餘方法同樣。注意類型參數只能表明引用型類型,不能是原始類型(像int,double,char等).git

  • 問題2:關於大o複雜度的計算
  • 問題2解決方案:在這種狀況下,內層循環索引被初始化爲外層循環索引的當前值。外層循環運行了n次,內層循環第一次被執行n次,第二次執行n-1次,等等……可是,記住,咱們只對主項感興趣,而忽視其餘常數項或其餘任何次要項。若是複雜度是線性的,則無論通過多少個元素,其階次依舊是O(n),所以,上面的代碼的複雜度爲O(n^2)。
  • 問題3:Queue接口兩種方法add和offer在異常類處理上有何不一樣。
  • 問題3解決方案:add操做能夠確保隊列中有給定的元素。若是給定元素沒有添加到隊列中,該操做將拋出一個異常。
    offer操做把給定元素插入到隊列中,若是插入成功,返回true,不然返回false。算法

代碼調試中的問題和解決過程

  • 問題1:使用IDEAgit到碼雲上的時候,出現以下錯誤:
    小程序

  • 問題1解決方案:git pull 強制上傳後,:wq保存,而後從新git push便可。
  • 問題2:安卓運行app時出現閃退的問題
    數組

  • 問題2解決方案:出現閃退的問題有不少,多是代碼語法沒有錯誤,可是運行出錯;多是找不到須要調用的類。後來在百度搜索到的解決方案以下:一、project->clean
    二、在MainActivity.java中
    查到setContentView中layout的位置是否正確。
    三、AndroidManifest.xml中 = name中檢查名字是否沒寫,或者更改
    四、在SecondAPP Manifest中
    刪除
    添加
  • 問題3:IDEA運行程序出現以下錯誤:
    服務器

  • 問題3解決方案:從新調試代碼後發現錯誤來源於代碼中的一個格式問題,修改後便可。數據結構

代碼託管

上週考試錯題總結

上週沒有進行考試,因此沒有錯題。

結對及互評

評分標準

  • 博客中值得學習的或問題:
    • 學習:在總結問題時有附上詳細的圖片,而我老是忘記截圖,代碼中出現的問題也能及時本身發現錯誤來源。
    • 問題:教材學習內容總結不夠詳細。
  • 代碼中值得學習的或問題:無
  • 基於評分標準,我給本博客打分:15分。得分狀況以下:
  1. 正確使用Markdown語法(加1分):
  2. 模板中的要素齊全(加1分)
  3. 教材學習中的問題和解決過程, 一個問題加1分()

  4. 代碼調試中的問題和解決過程, 一個問題加1分()
  5. 本週有效代碼超過300分行的(加2分)
  6. 其餘加分:
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進狀況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 錯題學習深刻的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習狀況真實可信的加1分

點評過的同窗博客和代碼

其餘(感悟、思考等,可選)

這兩週學習的內容較多,主要有安卓的一些內容和數據結構的一些內容,加上棧和隊列的內容,相對應的做業也就增長了。可是仍是要避免遺忘之前的知識。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 10000行 30篇 400小時
第一週 155/200 2/2 20/20 初步掌握linux命令、java小程序和jdb調試
第二 三週 470/625 2/4 20/40 學會scanner定義的使用,類的定義
第四周 1444/2069 2/4 20/60 下載安裝IDEA及其插件,學會TDD調試,編寫測試代碼
第五週 1917/3986 2/8 20/80 簡單的學會客戶端和服務器的編寫
第六週 1324/5310 1/9 20/100 Java封裝,繼承,多態
第七週 2795/8105 3/12 40/140 棧,鏈表
相關文章
相關標籤/搜索