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

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

每週做業連接彙總


第一週做業:課本的第一章和第二章,分別講了什麼是軟件,軟件質量特徵,數據結構,時間複雜度等。php


第二週做業:對課本第三章和第四章的學習,學習了棧,集合結構的棧和鏈式結構的棧。html


第三週做業:對課本第五章的學習,學習了隊列,Java API中的隊列,鏈表實現隊列,數組實現隊列等。node


第四周做業:對課本第六章學習,學習了類的列表,瞭解列表的種類,列表內的方法。git


第五週做業:對課本第九章的學習,學習了排序與查找,查找的多種方法和排序的多種方法。web


第六週做業:對課本第十章的學習,學習了樹的內容,包括樹的遍歷,樹的實現,二叉樹等。算法


第七週做業:對課本第十一章的學習,學習了二叉查找樹,實現了用來鏈表實現二叉查找樹和有序列表實現二叉查找樹,還完成了平衡二叉樹。編程


第八週做業:對課本第十二章的學習,學習了優先對列與堆,瞭解了最大(最小)堆的實現,堆的排序以及優先隊列。後端


第九周做業:對課本第十三章的學習,學習了無向圖,有向圖,帶權圖和圖算法。數組

The best and the most

  • 自認爲寫得最好一篇博客是?爲何? [第五週](https://www.cnblogs.com/mrf1209/p/9787932.html)博客,由於從那篇博,我認認真真的將全部的排序和查找方法都列了出來,並認真的講解其過程,並配了圖。
  • 做業中閱讀量最高的一篇博客是?談談經驗 說實話,這學期這個問題依舊讓人很糾結,由於我博客被閱讀量最大的那篇團隊做業一,咱們團隊的博客都是我一我的來寫的,因此瀏覽量多其實只是別的同窗來看咱們團隊的東西而不是個人博客,因此我就說個人第四周博客吧,我其實沒以爲不同凡響,也沒就就以爲這篇和其餘篇有啥區別,瀏覽量多是我那一週交的早了點吧,哈哈。

實驗報告連接彙總


實驗一 實驗名稱:線性結構實驗報告

簡要內容:對以前所學的數據結構進行熟悉和操做。

實驗二 實驗名稱:樹實驗報告

簡要內容:
對於樹這一種數據結構的深刻學習,包括瞭如何去創建一顆二叉樹,決策樹,以及對於紅黑樹代碼的分析以及算法的理解。

實驗三 實驗名稱:查找與排序
簡要內容:安裝alibaba 插件,解決代碼中的規範問題。完成重構內容的練習

實驗四 實驗名稱:哈夫曼樹的編碼實驗

簡要內容:關於哈夫曼樹的創建以及經過哈夫曼樹進行編碼而且對於一段文檔進行加密的實現。數據結構

團隊項目報告連接彙總(消消樂)


團隊做業第一週

  • 團隊介紹;
  • 團隊任務立項;
  • 團隊任務分配;
  • 團隊項目經驗;
  • 需求說明書;

團隊做業第二週

  • 修改完善《需求規格說明書》;
  • 制定團隊的編碼規範;
  • 使用Powerdesigner繪製ER圖;
  • 項目的後端架構設計;
  • 團隊分工;
  • TODOList及燃盡圖;
  • 小組會議及交互總結;
  • 本次分工及工做量比例

衝刺周-RSP小組——消消樂

代碼託管連接:

20172327馬瑞蕃

statistic.sh的運行結果

說明本學期的代碼量目標達到沒有


代碼量是達到了的,這學期知識點串聯的比較緊,因此好多代碼是有重複使用還和更改的,因此代碼量其實並無特別高,再合適的範圍內吧。

加點代碼,改點代碼是理解的最好方式,參考編程的智慧,談談你的心得。


對於《編程的智慧》這篇文章,我讀過以後有不少新的認識,這篇文章主要說的是編程過程當中的不少重構優化的建議。對於一個對編程入門不久的新人來講,編程學習和代碼的實現其實有時就會作的很麻煩,因此就須要更好的指導和更好的思惟方式從而使你所實現的代碼優雅可讀好用。

文章提到了反覆的推敲代碼,其實任何東西都應該有藝術性,當你的代碼經過不斷的推敲感悟,如同畫家對於畫做的不斷修改,才能將最美的一面展示給你們。優雅的代碼在我看來,就應該整整齊齊的放在一個一個的盒子中,而完美的邏輯就應該像樹狀結構,將每一個盒子串起來。

對於代碼的可讀性,真正優雅可讀的代碼,是幾乎不須要註釋的。若是咱們充分利用了程序語言的表達能力,你徹底能夠用程序自己來表達它到底在幹什麼,而不須要天然語言的輔助。有少數的時候,你也許會爲了繞過其餘一些代碼的設計問題,採用一些違反直覺的做法。這時候你可使用很短註釋。這可能對於如今的咱們來講有點困難,可是我想,你在你代碼中使用有意義的函數和變量名字,局部變量名字應該簡短,簡短的配合上下文,就能夠簡潔明瞭的表達代碼邏輯了。

這篇文章實際上是很是實用的,對於之後的學習和交流,都有不少幫助。

積極主動敲代碼作到沒?教材實踐上有什麼經驗教訓?


這學期其實我並無和上學期同樣那麼主動去敲代碼,書本上的代碼也沒本身敲過,並且本學期的書中錯誤仍是比較多的,這些是我這學期的不足,可能本身變懶了,或者這學期其餘活動有些多,因此對於代碼的態度有點懈怠。

教材實踐也沒啥經驗,跟隨大流吧,多看看書,多看看示意圖,多看看網上的博客,就會了解更多。

課堂項目實踐


實踐一 實驗名稱: 時間複雜度分析
實踐內容:

  • 時間複雜度分析,用大O記法寫出所給出各題的時間複雜度。


實踐二 實驗名稱: ArrayStack的實現和測試
實踐內容:

  • 完成課本中ArrayStack類的實現,特別是完成peek、isEmpty、size和toString方法的實現,並完成四個方法的測試。


實踐三 實驗名稱: 鏈表插入
實踐內容:

  • 寫出鏈表中節點插入的操做代碼:
    public static void InsertNode(Student2 Head, Student2 node){

    }
  • 寫出僞代碼便可,須要邏輯正確。


實踐四 實驗名稱: 鏈表實踐
實踐內容:

  • 經過鍵盤輸入一些整數,創建一個鏈表(1分);
  • 實現節點插入、刪除、輸出操做(2分,3個知識點根據實際狀況酌情扣分);
  • 使用冒泡排序法或者選擇排序法根據數值大小對鏈表進行排序(2分);


實踐五 實驗名稱: 第四章代碼檢查
實踐內容:

  • 運行PP28,PP28頁的程序,根據我的學號輸入後綴表達式並計算。
  • 例如,學號172301,輸入1 7 + 2 3 0 1 - + *)
  • 把運行結果截圖上傳。


實踐六 實驗名稱:LinkedStack補全
實踐內容:

  • 給出size、isEmpty和toString等方法的定義,以完成LinkedStack 類的實現。
  • 要求:1.可以運行
    2.須要測試各個方法
    3.把代碼上傳到碼雲,並將關鍵代碼和運行結果截圖加水印(學號)上傳。


實踐七 實驗名稱: 第五章代碼檢查-凱撒密碼
實踐內容:

  • 代碼檢查P72-P73,凱撒密碼程序。
  • 運行代碼並截圖,添加學號水印,上傳到碼雲。


實踐八 實驗名稱: 楊輝三角
實踐內容:

  • 使用循環隊列輸出楊輝三角(本題目是選作題,總分1分,計入加分。)。
    +(1)用數組實現循環隊列(要考慮擴容問題,不然不加分);
    +(2)輸出楊輝三角;
    +(3)代碼運行結果添加學號水印,並上傳;代碼傳到碼雲,附上碼雲連接。


實踐九 實驗名稱: 棧隊列測試
實踐內容:

  • 完成第六題的分析


實踐十 實驗名稱: 第六章代碼檢查
實踐內容:

  • 運行PP6.8和PP6.11的程序,把結果截圖,加學號水印,上傳到藍墨雲。


實踐十一 實驗名稱: 線性表實踐
實踐內容:

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


實踐十二 實驗名稱: ASL測試
實踐內容:

  • 已知線性表具備元素{5,13,19,21,37,56,64,75,80,88,92},若是使用折半查找法,ASL是多少?


實踐十三 實驗名稱: 三種查找算法練習
實踐內容:

  • 每種算法2分,包括畫出存儲形式和asl的計算。


實踐十四 實驗名稱:哈希衝突處理實踐
實踐內容:

  • 把本身的學號加21,例如學號爲1,把22添加到序列後面,使用鏈地址法,解決衝突。
  • 編程實現,並測試。
  • 要求計算asl,輸出衝突次數。


實踐十五 實驗名稱: 希爾排序測試
實踐內容:

  • D2等於2時,第2趟排序結果是?


實踐十六 實驗名稱: 樹計算題
實踐內容:

  • 1.有1023個結點的徹底二叉樹,其高度是多少?葉結點數是多少?(2分)
  • 2.高度爲h的徹底二叉樹至少有多少個結點?至多有多少個結點?(2分)
  • 3.已知一棵度爲m的樹中有n1個度爲1的結點,n2個度爲2的結點,…,nm個度爲m的結點,問該樹中有多少個葉結點?(2分)


實踐十七 實驗名稱: 樹的深度和葉子個數計算
實踐內容:

  • (1)參考下面葉子節點計算的僞代碼,計算課本中背部疼痛診斷器中決策樹的葉子節點個數?
    int CountLeaf ( BiTree T, int &count )
    { if ( T )
    { if ( (!T->lchild) && (!T->rchild) )
    count++; // 對葉子結點計數
    CountLeaf( T->lchild, count);
    CountLeaf( T->rchild, count);
    }
    }
  • (2)根據課堂介紹的遞歸樹深度計算算法,計算決策樹的深度。


實踐十八 實驗名稱: 中序和先序計算二叉樹結構
實踐內容:

  • 若已知中序和先序序列,計算二叉樹結構
  • 例:已知一棵二叉樹的先序序列和中序序列分別爲ABDGHCEFI 和 GDHBAECIF,試肯定二叉樹結構。


實踐十九 實驗名稱: 層次遍歷法實踐
實踐內容:

  • (1)使用遞歸實現層次遍歷背部疼痛決策樹,並按照層次順序輸出每一個節點內容。(2分)
  • (2)非遞歸的層次遍歷法算法以下:
    根結點入隊;
  • 從隊頭取元素, 並執行以下3個動做:
    (1)訪問該結點;
    (2)若是該元素有左孩子,則左孩子入隊;
    (3)若是該元素有右孩子,則右孩子入隊;
  • 重複執行上述過程,直至隊列爲空。 此時,二叉樹遍歷結束。
  • 按照上述算法,編程實現層序遍歷,按照層序的方法,遍歷並依次輸出每一個節點內容。(3分)


實踐二十 實驗名稱: 堆構造與排序
實踐內容:

  • 根據關鍵字序列:36,30,18,40,32,45,22,50,構造一顆小頂堆,並排序?
  • 畫出構造堆過程(樹+數組)


實踐二十一 實驗名稱: 堆排序測試
實踐內容:

  • 根據關鍵字序列:36,30,18,40,32,45,22,50,利用數組構造一顆大頂堆,並排序。
    要求:
    (1)輸出構造好的大頂堆序列(層序);
    (2)輸出每輪排序的結果(數組的結果);
  • 把結果截圖並加學號水印上傳到藍墨雲,代碼上傳到碼雲。


實踐二十二 實驗名稱: 十字鏈表練習
實踐內容:

  • 畫出十字鏈表結構


實踐二十三 實驗名稱: 最小生成樹
實踐內容:

  • 1.畫出Prim算法的最小生成樹的生成過程
  • 2.畫出Kruscal算法的最小生成樹的生成過程
  • 3.計算最小權值


實踐二十四 實驗名稱: Dijkstra(迪傑斯特拉)算法測試
實踐內容:

  • 任務詳情
    使用Dijkstra(迪傑斯特拉)算法計算單源(V1出發)最短路徑。
    圖2是課堂介紹的示例。
    要求
    (1)寫出V1到各個頂點的最短路徑
    (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)撰寫博客記錄實驗的設計和實現過程,並將源代碼傳到碼雲
    (6)把實驗結果截圖上傳到雲班課

課堂實踐對提升應用能力有幫助嗎?

固然有幫助,雖然和上學期相比,多了不少,也難了不少,可是與寫博客相比,感受要好的多。課堂實踐有在課堂上完成的,也有在課下完成的,但基本上十貼合最近所學的內容,讓咱們加以練習的,在鞏固所學內容的同時,也會給咱們對於知識的一些拓展。手動與理論相結合,這纔可讓知識爲咱們所吸取。

課堂實踐上本身有什麼經驗教訓?

首先,必定要及時完成實驗,在規定時間內完成,若是被罰寫博客,又會佔用本身的其餘時間,其次,在作實踐的同時,咱們會感受到本身對這些知識的瞭解程度如何,若是很差,藉此機會咱們能夠再複習一遍。

課堂實踐上對老師有什麼教學建議?

和上學期有所不一樣,咱們實踐這學期的要更多一些,並且有了一些複習的東西,例如隔了很久,忽然佈置一篇老早之前的東西,讓咱們有些措手不及,其實沒啥建議,課堂實踐與實驗感受愈來愈接近,沒啥區別了。

課程收穫與不足

本身的收穫(投入,效率,效果等)
+ 這學期的收穫其實也是蠻多的,數據結構的知識接觸,團隊項目設計的全過程參與,反正學到了不少東西。之前的我以爲一個Android項目的實現,不就和咱們假期中同樣,本身找方法,本身一我的編,最後只要成品出來就能夠了,可是,通過此次團隊編程實踐,我知道了還要作不少東西,全部要作的和想要實現的都得讓咱們提早去規劃,提早去作好計劃,整個項目不能像本身作那樣,難一點實現的就跳過,或該計劃,這些都是項目完成中的大忌。並且,必定要按照時間計劃中的作,稍有不慎,就會影響整個進度,以至於沒法完成。 + 在這學期最後節程序設計與數據結構課以前一晚,咱們團隊熬了個通宵,爲的是咱們項目最後的實現,我以爲這並不值得高興,由於最後的展現中咱們出了不少的問題。這些值得反思,值得咱們團隊全部成員的反思。
本身須要改進的地方
不足有很好更多,知識的不紮實,以至於有些代碼裏的某些部分我不知道是幹嗎用的,項目作的少,對於知識無法鞏固和複習,有的時候,懶惰和情緒能給我帶來好多麻煩,因此,之後要控制情緒,也要有更合理的時間安排和規劃。

問卷調查

你平均每週投入到本課程有效學習時間有多少?
天天平均應該有3個小時時間在學習Java,因此一週大概20個小時左右,有時一週項目難一點,章節多一點或許能夠達到30個小時。
每週的學習效率有提升嗎?你是怎麼衡量的?
每週的任務不一樣,難度不一樣,因此學習效率真的感受無法評定。
藍墨雲班課的使用對你的學習有促進嗎?有什麼建議和意見嗎?
有的,資料不少,有些仍是有用的,並且經過其佈置做業,提交做業都很方便,手機端,pc端都挺好用的。
你以爲這門課老師應該繼續作哪一件事情?
課堂實踐
你以爲這門課老師應該中止作哪一件事情?
沒啥須要中止,都挺好的。
你以爲這門課老師應該開始作什麼新的事情?
- 上課可以講再細緻一點,由於有時候沒有徹底聽懂。 - 多開導咱們的思惟方式。

總結中涉及到的連接的二維碼

碼雲項目連接: 二維碼

課程總結

實驗報告

團隊博客

相關文章
相關標籤/搜索