20172323 2018-2019-1《程序設計與數據結構》課程總結

每週做業連接彙總

  • 第一週做業:軟件質量與算法分析
  • 第二週做業:集合概述——棧、鏈式結構——棧
  • 第三週做業:隊列以及實現隊列的幾種方式
  • 第四周做業:列表以及實現列表的幾種方式
  • 第五週做業:排序與查找
  • 第六週做業:樹、實現樹的策略、樹的遍歷
  • 第七週做業:二叉查找樹及實現二叉查找樹的幾種方式(AVL樹、紅黑樹)
  • 第八週做業:優先隊列與堆
  • 第九周做業:圖、圖的幾種算法和實現策略php

  • 自認爲寫得最好一篇博客是?爲何?
    自認爲寫得最好的一篇博客,應該是第七週這篇吧。讀到這個問題時腦子裏第一反應就是這篇,倒不僅僅由於寫得多,若是拼字數的話,教材學習內容總結多抄一些教材上的知識點上去就行了,在寫博客這方面字數的量變很難引發質變,抄一堆又臭又長的東西馬虎了事,很難說對本身能有什麼幫助。選這篇的緣由正是由於我在學習並進行總結寫博客的時候真正領會到了一些東西,尤爲是紅黑樹那一部分,好像是抽風了同樣的就特別想把那一部分搞懂,一開始沒有讀懂書上的意思,結合其餘資料也不能徹底理解,而後就在博客上留下一堆未完成的學習總結,每隔一天就拿出來順着思路從新理解,天天都多理解透了一點,直到最後差很少理解徹底了,又結合書上的例子本身畫圖將紅黑樹的構造方法畫了幾回貼在博客上。好像在個人學習過程當中不多有這樣鑽牛角尖的狠勁,因此記憶猶新,自認爲最好。html

  • 做業中閱讀量最高的一篇博客是?談談經驗
    若是沒看錯的話是第六週這一篇,很重要的一點就是早發博客!若是在做業發佈的瞬間就將做業提交上去,別的同窗在看做業的時候就會看到你已提交,天然而然的就會點進去幫你刷閱讀量了。固然這篇博客閱讀量高我認爲很重要的一個緣由就是其中關於printTree方法的理解吧,當時理解這個方法的人並很少,我也是在讀了大佬的博客以後纔有所頓悟,因而一邊理解這個方法一邊寫下本身的理解,算是對這個方法有稍詳細的解讀,進而對別人也有幫助,因此閱讀量高吧。正經的經驗就是,把博客寫好,天然而然會有人來看!node

實驗報告連接彙總

團隊項目報告連接彙總

代碼託管連接

  • 給出statistic.sh的運行結果,說明本學期的代碼量目標達到沒有?

    其實Android Studio上團隊編程還有修修改改幾千行代碼,兩學期一萬行的代碼確定是達到了。git

  • 加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得
    記得以前有一次的實驗給了一個博客連接,裏面就提到說,參照別人的代碼何嘗不是一件好事。由於別人已經寫出了一個優質代碼,理解他是怎麼實現的有時候比本身費一成天勁寫一個不咋樣的代碼收穫更多。這學期有不少項目都是這樣,本身寫的代碼很容易陷入桎梏之中,不能跳出某個圈子,反而借鑑他人的代碼,能提供不少新鮮的思路,更能給人啓發,同時也提升了學習的效率。
  • 積極主動敲代碼作到沒?教材實踐上有什麼經驗教訓?
    基本上是完成了積極主動敲代碼了,教材實踐的經驗教訓就是要回歸教材知識,但又同時不侷限於教材,要學會借鑑別人的代碼,但不是抄襲別人的代碼web

課堂項目實踐

  • 實踐一:時間複雜度分析算法

    (1)for(i=1;i<=n;i++) 
          for(j=1;j<=i;j++) 
           for(k=1;k<=j;k++)  
    (2)void fun(int n) {
      int i=l;
      while(i<=n)
         i=i*10;
    }
    (3)int i, j,sum;
      i=0;
      j=0;
      sum = i+j;
    
    (4)void fun (int n){
      int i=0;
      while(i*i*i<=n)
         i++;
    }
  • 實踐二:完成課本中ArrayStack類的實現,特別是完成peek、isEmpty、size和toString方法的實現,並完成四個方法的測試。數據庫

    public T peek() throws EmptyCollectionException
     {
    
     }
     public boolean isEmpty()
     {
         // To be completed as a Programming Project
     }
    
     public int size()
     {
         // To be completed as a Programming Project
     }
    
     public String toString()
     {
         // To be completed as a Programming Project
     }
  • 實踐三:寫出鏈表中節點插入的操做代碼(僞代碼)編程

    public static void InsertNode(Student2 Head, Student2 node){
    
     }
  • 實踐四:鏈表練習,要求實現下列功能數組

    • (1)經過鍵盤輸入一些整數,創建一個鏈表
    • (2)實現節點插入、刪除、輸出操做
    • (3)使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序
  • 實踐五:運行PP28,PP28頁的程序
    • 根據我的學號輸入後綴表達式並計算。(例如,學號172301,輸入1 7 + 2 3 0 1 - + *)
  • 實踐六:給出size、isEmpty和toString等方法的定義,以完成LinkedStack 類的實現。 數據結構

    • 1.可以運行
    • 2.須要測試各個方法
    • 3.把代碼上傳到碼雲,並將關鍵代碼和運行結果截圖加水印(學號)上傳。
  • 實踐七:代碼檢查P72-P73

    • 凱撒密碼程序。
    • 把結果截圖,加學號水印,上傳到藍墨雲。
  • 實踐八:使用循環隊列輸出楊輝三角

    • (1)用數組實現循環隊列(要考慮擴容問題,不然不加分)
    • (2)輸出楊輝三角
    • (3)代碼運行結果添加學號水印,並上傳;代碼傳到碼雲,附上碼雲連接。
  • 實踐九:棧隊列測試題

  • 實踐十:運行PP6.8和PP6.11的程序,

  • 實踐十一:定義一個商品類Product,須要包括商品名稱、價格等信息,使用鏈式存儲結構實現一個線性表,存儲商店中的商品。支持插入、刪除、選擇排序、查找等功能,並進行簡單測試。須要使用的知識點:

    - 1.泛型
    - 2.實現Comparable接口中的方法
    - 3.鏈式存儲結構
  • 實踐十二:已知線性表具備元素{5,13,19,21,37,56,64,75,80,88,92} 若是使用折半查找法,ASL是多少?

  • 實踐十三:畫出存儲形式和asl的計算

  • 實踐十四:把本身的學號加21,例如學號爲1,把22添加到序列後面,使用鏈地址法,解決衝突。編程實現,並測試。

    • 要求計算asl,輸出衝突次數。
  • 實踐十五:當D2等於2時,第2趟排序結果是?

  • 實踐十六:計算題

    • 1.有1023個結點的徹底二叉樹,其高度是多少?葉結點數是多少?
    • 2.高度爲h的徹底二叉樹至少有多少個結點?至多有多少個結點?
    • 3.已知一棵度爲m的樹中有n1個度爲1的結點,n2個度爲2的結點,…,nm個度爲m的結點,問該樹中有多少個葉結點?
  • 實踐十七:參考下面葉子節點計算的僞代碼,計算課本中背部疼痛診斷器中決策樹的葉子節點個數?

    int CountLeaf ( BiTree T,  int &count )
     {     if ( T ) 
        {     if (  (!T->lchild) && (!T->rchild)  )
               count++;     // 對葉子結點計數
               CountLeaf( T->lchild, count);  
               CountLeaf( T->rchild, count); 
        }
     }
  • 實踐十八:若已知中序和先序序列,計算二叉樹結構

    • 例:已知一棵二叉樹的先序序列和中序序列分別爲ABDGHCEFI 和 GDHBAECIF,試肯定二叉樹結構。
    • 根據課堂介紹的遞歸樹深度計算算法,計算決策樹的深度。
  • 實踐十九:使用遞歸實現層次遍歷背部疼痛決策樹,並按照層次順序輸出每一個節點內容。

    • 非遞歸的層次遍歷法算法以下:
    • 根結點入隊;從隊頭取元素,並執行以下3個動做:
    • (1)訪問該結點;
    • (2)若是該元素有左孩子,則左孩子入隊;
    • (3)若是該元素有右孩子,則右孩子入隊;
    • 重複執行上述過程,直至隊列爲空。此時,二叉樹遍歷結束。按照上述算法,編程實現層序遍歷,按照層序的方法,遍歷並依次輸出每一個節點內容。(3分)
  • 實踐二十:根據關鍵字序列:36,30,18,40,32,45,22,50,構造一顆小頂堆,並排序?畫出構造堆過程(樹+數組)

  • 實踐二十一:根據關鍵字序列:36,30,18,40,32,45,22,50,利用數組構造一顆大頂堆,並排序。

    要求:
    • (1)輸出構造好的大頂堆序列(層序)
    • (2)輸出每輪排序的結果(數組的結果)
    • 把結果截圖並加學號水印上傳到藍墨雲,代碼上傳到碼雲。
  • 實踐二十二:使用Dijkstra(迪傑斯特拉)算法計算單源(V1出發)最短路徑。

    • (1)寫出V1到各個頂點的最短路徑
    • (2)要求寫出最短路徑計算過程(相似於圖2)
  • 實踐二十三:AOE練習

    • 一、求關鍵路徑,v1和ve的值並寫出具體步驟
    • 二、畫出圖一可能的拓撲序列
    • 三、畫出圖二所示無向圖的鄰接矩陣、鄰接鏈表,並列出深度優先和廣度優先遍歷圖所得的頂點序列。
    • 四、寫出圖三的鄰接矩陣,並用prim算法求最小生成樹,畫出產生過程
  • 實踐二十四:哈夫曼編碼測試

    • 設有字符集:S={a,b,c,d,e,f,g,h,i,j,k,l,m,n.o.p.q,r,s,t,u,v,w,x,y,z}。給定一個包含26個英文字母的文件,統計每一個字符出現的機率,根據計算的機率構造一顆哈夫曼樹。並完成對英文文件的編碼和解碼。
    • 要求:
    • (1)準備一個包含26個英文字母的英文文件(能夠不包含標點符號等),統計各個字符的機率
    • (2)構造哈夫曼樹
    • (3)對英文文件進行編碼,輸出一個編碼後的文件
    • (4)對編碼文件進行解碼,輸出一個解碼後的文件
    • (5)撰寫博客記錄實驗的設計和實現過程,並將源代碼傳到碼雲
  • 課堂實踐對提升應用能力有幫助嗎?
    有必定的幫助,主要是運用教材學到的知識去解決一些問題,既鞏固了課上學到的知識,同時又拓展了一些課外的知識
  • 課堂實踐上本身有什麼經驗教訓?
    課堂實踐的一點經驗教訓就是要認真讀題,不少時候實踐的丟分都是由於讀題不夠仔細,會錯了意。
  • 課堂實踐上對老師有什麼教學建議?
    但願老師更多的抓住同窗們的疑難問題進行講解,同時也能夠適當的講解一下教材實踐如何編寫,也就是能評講一下做業,提供一些比較優秀的解答

  • 課程收穫與不足(不要抄上學期的,不然會扣分)
    這學期主要學習的是數據結構方面的知識,就這方面來講確定是有極大的收穫。最大的不足就是我居然一時說不出個人收穫是什麼,直知道學習了數據結構,具體的收穫是什麼,真還想不起來啥。最近的團隊合做項目卻是讓我收穫了不少關於安卓方面的知識,特別是關於界面設計的一些玩意兒。
  • 本身的收穫(投入,效率,效果等)
    我自認爲這學期比上學期更加投入,雖然沒有像上學期那樣老是熬夜寫代碼,可是對於日常的各類項目、做業包括博客都是很投入的在作、在學,但是效果彷佛也不是多麼好,至少在成績上並無很明顯的提升,甚至還有些降低的趨勢。同時學到的東西也老是容易忘記,效果也不算好,在須要用到知識的地方老是很難觸類旁通,靈活運用到。

  • 本身須要改進的地方
    就是學以至用的方面作得很差,正如上一段回答說到的那些。敲代碼也須要更加積極主動

  • 結對學習是否是真正貫徹了?寫一下你提供的幫助或接受了什麼幫助,並對老師提供參考建議
    接受小組成員的幫助更多一點吧,畢竟成績在小組幾個中算是最差勁的了。好比博客的問題怎麼寫,編寫代碼時遇到的不少問題,以及日常測驗的糾錯,不少都是在與小組成員的討論中獲得的正確答案。沒有給老師的參考建議。

問卷調查

  • 你平均每週投入到本課程有效學習時間有多少?
    十個小時左右
  • 每週的學習效率有提升嗎?你是怎麼衡量的?
    我以爲每週的學習效率都在前一週的基礎上有必定的提升,衡量的標準能夠有不少,好比這一週的任務有沒有按時或者提早完成,或者在一樣一週的時間內有沒有掌握更多的知識,弄明白了多少個難點等等
  • 藍墨雲班課的使用對你的學習有促進嗎?有什麼建議和意見嗎?
    只能說幫助有限,由於學習資源我更偏向於在網上本身搜索,因此班課上的資源並不經常使用。可是測驗之類在班課上進行仍是比較方便直觀。建議就是與經過班課與老師和助教的交流不太方便,但願能改進一下。
  • 你以爲這門課老師應該繼續作哪一件事情?
    繼續作的事情就是團隊編程項目,我以爲這樣能充分調動每一個同窗的積極性,而且很好運用、鞏固課上學到的知識,同時也能使咱們主動學習課外的知識
  • 你以爲這門課老師應該中止作哪一件事情?
    暫時沒有想好有什麼不太適合本課程的事情。

  • 最後總結的說一下兩學期的學習的一些感覺,雖然具體的說不上來收穫到底有哪些,但確實一年的學習讓我有了一種十足的收穫感,至少我能更真切的瞭解作中學、自主學習是怎樣的一種學習方式。這些對之後其餘計算機方面課程的學習也確定能起到不小的幫助。

連接的二維碼

碼雲項目連接:

第一週博客:

第二週博客:

第三週博客:

第四周博客:

第五週博客:

第六週博客:

第七週博客:

第八週博客:

第九周博客:

...
實驗一 :

實驗二:

實驗三:

課堂測試一:

課堂測試二:

課堂測試三:

課堂測試四:

第一週:

第二週:

奔跑吧DKY——團隊Scrum衝刺階段-Day 1-領航:

奔跑吧DKY——團隊Scrum衝刺階段-Day 2:

奔跑吧DKY——團隊Scrum衝刺階段-Day 3:

奔跑吧DKY——團隊Scrum衝刺階段-Day 4:

奔跑吧DKY——團隊Scrum衝刺階段-Day 5:

奔跑吧DKY——團隊Scrum衝刺階段-Day 6:

奔跑吧DKY——團隊Scrum衝刺階段-Day 7:

實踐一:

實踐二:

實踐三:

實踐四:

實踐五:

實踐六:

實踐七:

實踐八:

實踐九:

實踐十:

實踐十一:

實踐十二:

實踐十三:

實踐十四:

實踐十五:

實踐十六:

實踐十七:

實踐十八:

實踐十九:

實踐二十:

實踐二十一:

實踐二十二:

實踐二十三:

實踐二十四:

相關文章
相關標籤/搜索