20182330《程序設計與設計結構》 第八週學習總結

20182330《程序設計與設計結構》 第八週學習總結

教材學習內容總結

週一:node

  1. 鏈表實現棧
    data存放數據點
    next下一節點
    存儲地址 數據域
    單鏈表:只含一個指針域的鏈表 a-》
    雙向鏈表:<-a->
    地址不必定連續git

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

  3. 頭插法:新對象指向首個元素,head指針賦給新對象,則新鏈表完成
    node.next=Head;
    Head =node;
    return Head;
    刪除:
  4. temp.next=temp.next.next
  5. 兩個指針,p.next=q.next
    循環鏈表
    雙向鏈表
    棧與鏈表
    top即爲head學習

週五:隊列測試

  1. 隊列:只能在隊頭刪除,隊尾插入。先進先出(隊列等連續存儲結構能夠隨機存取,鏈表不能夠,必須從第一個開始找)
  2. 方法:enqueue入隊
    dequeue出隊
    first=peek看第一個元素
    isEmpty是否爲空
    size多少元素
  3. 定義結點
    LinerNode
    LinerNode front //隊頭指針
    LinerNode rear // 隊尾指針
    int count//元素個數
    演示https://visualgo.net/en/list
  4. 線性表
    具備相同特性數據元素的有限序列
    棧隊列是特殊的線性表
  5. 出隊入隊操做:
    爲空時rear front都在1(不是指針),爲空斷定條件:(rear==front)也有可能隊滿!
    (1) 少用一個空間,判斷(rear+1)%M=front
    (2) size
    (3)看上一步操做,肯定是front致使的仍是rear致使的)
    入隊rear+1,q[rear++]=x;
    出隊front+1,e=q[front++];
    假溢出:0 1 2 3 4 5 浪費空間
    (出隊元素)
    解決:
    (1)依次固定
    (2) mod size,循環隊列:把隊列設想成環形,讓隊列設想成環形,讓sq【0】接在sq【M-1】以後,即:若rear+1==M, 則另rear=0,移動指針不能用i=i+1,而是i=(i+1)%MAX
    入隊 sq【rear】=e;
    rear=(rear+1)%M
    出隊e=sq

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

  • 問題1:老師在課堂上演示的代碼常常有泛型,那麼究竟什麼是泛型??如何使用?
  • 問題1解決方案:書本和網上解決。
  • 首先咱們要知道:使用變量以前要定義,定義一個變量時必需要指明它的數據類型,什麼樣的數據類型賦給什麼樣的值。
  • 泛型,即「參數化類型」。一提到參數,最熟悉的就是定義方法時有形參,而後調用此方法時傳遞實參。那麼參數化類型怎麼理解呢?
  • 顧名思義,就是將類型由原來的具體的類型參數化,相似於方法中的變量參數,此時類型也定義成參數形式(能夠稱之爲類型形參),而後在使用/調用時傳入具體的類型(類型實參)。

泛型的本質是爲了參數化類型(在不建立新的類型的狀況下,經過泛型指定的不一樣類型來控制形參具體限制的類型)。也就是說在泛型使用過程當中,
操做的數據類型被指定爲一個參數,這種參數類型能夠用在類、接口和方法中,分別被稱爲泛型類、泛型接口、泛型方法。spa

用一個例子來講明:.net

List arrayList = new ArrayList();
arrayList.add("aaaa");
arrayList.add(100);

for(int i = 0; i< arrayList.size();i++){
    String item = (String)arrayList.get(i);
    Log.d("泛型測試","item = " + item);
}

毫無疑問,程序的運行結果會以崩潰結束:
ArrayList能夠存聽任意類型,例子中添加了一個String類型,添加了一個Integer類型,再使用時都以String的方式使用,所以程序崩潰了。爲了解決相似這樣的問題(在編譯階段就能夠解決),泛型應運而生。設計

咱們將第一行聲明初始化list的代碼更改一下,編譯器會在編譯階段就可以幫咱們發現相似這樣的問題。指針

List<String> arrayList = new ArrayList<String>();
...
//arrayList.add(100); 在編譯階段,編譯器就會報錯
  • 問題2:「串行化」是什麼意思
  • 問題2解決方案:串行化(Serialization)是計算機科學中的一個概念,它是指將對象存儲到介質(如文件、內存緩衝區等)中或是以二進制方式經過網絡傳輸。以後能夠經過反串行化從這些連續的字節(byte)數據從新構建一個與原始對象狀態相同的對象,所以在特定狀況下也能夠說是獲得一個副本,但並非全部狀況都這樣。
  • 暫時就只能看懂這麼多。
  • 問題3:學習隊列時偶然看到了「消息隊列」的字眼,那什麼是消息隊列?
  • 問題3解決方案:「消息」是在兩臺計算機間傳送的數據單位。消息能夠很是簡單,例如只包含文本字符串;也能夠更復雜,可能包含嵌入對象。
    消息被髮送到隊列中。「消息隊列」是在消息的傳輸過程當中保存消息的容器。消息隊列管理器在將消息從它的源中繼到它的目標時充當中間人。隊列的主要目的是提供路由並保證消息的傳遞;若是發送消息時接收者不可用,消息隊列會保留消息,直到能夠成功地傳遞它。

    通俗的解釋就是程序產生內容->入隊(生產者) ->出隊(消費者)

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

  • 問題1:頭插法出錯
  • 問題1解決方案:頭插法在返回時必定要返回新的鏈表頭,這樣才能實現頭插,不然就像我同樣一直陷入死循環,檢查代碼無誤,單步調試也無誤,費了九牛二虎之力才找到問題的所在。

代碼託管

前幾周忘了截圖,這是截止第十週以前的代碼,之後會記得按時截圖,如下統計代碼量按照總增量/3計算。

上週考試錯題總結

上週無考試

結對及互評

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20182314
    • 點評:知識點總結的較爲詳細,可是代碼的問題理解不深。
      基於評分標準,我給本博客打分:14分。得分狀況以下:
      感想,體會不假大空的加1分
      排版精美的加一分
      結對學習狀況真實可信的加1分
      正確使用Markdown語法
      模板中的要素齊全(加1分)
      錯題學習深刻的加1分
      點評認真,能指出博客和代碼中的問題的加1分
      教材學習中的問題和解決過程, 加5分
      代碼調試中的問題和解決過程,加2分
  • 上週博客互評狀況

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

學習內容加緊,在時間上很緊張,天天要熬夜才能完成各類學科的任務。但願可以調節好本身的時間,以最好的狀態學習。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 10000行 30篇 400小時
第一週 42/42 2/2 20/20
第三週 394/471 2/4 25/45
第四周 394/471 2/4 25/45
第五週 1668/2139 2/6 35/80
第六週 2388/4527 1/7 30/110
第七週 1660 /6187 2/9 25/135
第八週 1660/7847 2/11 20/130
  • 計劃學習時間:25小時

  • 實際學習時間:20小時

  • 改進狀況:但願提升效率

參考資料

相關文章
相關標籤/搜索