1.集合的同構和異構,集合同構意味着保存類型所有相同,集合異構意味着保存各類類型的對象。php
2.動態數據結構和靜態數據結構。html
- 靜態數據結構,例如數組在內存中是連續的存儲區域,缺點是長度是固定的,新增或刪除某一數據花費的時間比較多。優勢能夠直接訪問各個數據,各個數據的地址均可以根據首地址獲得,訪問時間複雜度O(1)。
- 動態數據結構,例如鏈表在內存中不是連續的存儲區域,每個節點包含節點數據和下一個節點的指針。缺點是不利於節點的隨機訪問。訪問節點花費時間比較多,爲O(n)。優勢是可以動態的調整容量,插入或者刪除數據方便。
- 靜態數據結構的特色是由系統分配固定大小的存儲空間,之後在程序運行的過程當中,存儲空間的位置和容量都不會再改變。動態數據結構不肯定總的數據存儲量,而是爲現有的每個數據元素定義一個肯定的初始大小的空間,若干個數據元素分配若干個一樣大小的空間;當問題的數據量發生變化時,數據的存儲空間的大小也發生變化。
3.線性數據結構和非線性數據結構。線性數據結構包括隊列和堆棧,非線性數據結構包括樹和圖。node
- 隊列是一種以先進先出的方式管理數據的線性數據結構
- 堆棧是一種以後進後出的方式管理數據的線性數據結構
- 樹是一種以層次結構組織數據的非線性數據結構
- 圖是非線性數據結構,使用常見的邊來鏈接節點
4.Java集合類API。集合類存放的都是對象的引用,而非對象自己,出於表達上的便利,咱們稱集合中的對象就是指集合中對象的引用(reference)。git
- 集合類型主要有3種:set(集)、list(列表)和map(映射)。
5.泛型,泛型對象是一種集合類對象,實現泛型對象是爲了使其管理的對象的類型在某個集合類創建時也被建立,這樣就容許編譯時能控制一些加入到該集合中的對象的類型,減少這些對象從該集合清除時的類型轉換處理。程序員
問題1解決方案:隊列和堆棧是兩個相似鏈表的線性數據結構,但在使用時有更多的限制。對於通常的鏈表,能夠經過鏈表的任意位置插入和刪除節點進行修改,可是隊列只能在一端加入節點(入隊)(入棧),在另外一端一處節點(出隊)(出棧),所以隊列是先進先出(FIFO)數據結構,堆棧是後進先出(LIFO)數據結構。web
問題2的解決方案:線性結構是n個數據元素的有限序列。非線性結構是一個結點元素可能有多個直接前趨和多個直接後繼。算法
線性結構指的是數據元素之間存在着「一對一」的線性關係的數據結構;編程
經常使用的線性結構有:線性表,棧,隊列,雙隊列,數組,串;數組
非線性數據結構有:集合結構(沒有對應關係)、樹結構(一對多)、圖結構或網結構(多對多)數據結構
問題3的解決方案:數據結構是指相互之間存在一種或多種特定關係的數據元素的集合。一般狀況下,精心選擇的數據結構能夠帶來更高的運行或者存儲效率。數據結構每每同高效的檢索算法和索引技術有關。數據結構是指同一數據元素類中各數據元素之間存在的關係。數據結構分別爲邏輯結構、存儲結構(物理結構)和數據的運算。
問題1解決方案:剛學完鏈表的問題就在代碼上進行實驗,更具很蒙,就開始仿着在鏈表尾部進行添加的方法進行。
```
public void add(Magazine mag)
{
MagazineNode node = new MagazineNode(mag);
MagazineNode current;
if (list == null) list = node; else { current = list; while (current.next != null) current = current.next; current.next = node; }
}
針對刪除的方法,經過對鏈表的每個節點進行內容的比對,不是就往下進行持續到尾部。可是個人這個刪除有個缺陷,就是若是有刪除的內容在鏈表中沒有的話,沒有報錯的語句,不知道在哪裏進行添加的。
public void delete(Magazine Node)
{
MagazineNode current1 = list;
if(String.valueOf(current1.magazine).equals(String.valueOf(Node))) { list = current1.next; } else { while (!(String.valueOf(current1.next.magazine).equals(String.valueOf(Node)))) { current1 = current1.next; } current1.next = current1.next.next; }
}
添加的方法寫的相對比較完善,針對要添加的位置超出了整個鏈表的長度的話,會報出提醒的。正常的操做就是設置兩個節點,而後在正確的位置進行加入新內容,而後把新內容的指針指向加入位置的後面鏈表,再在斷開的位置進行指向新內容的地方。
ppublic void insert(int index, Magazine newMagazine)
{
MagazineNode node = new MagazineNode(newMagazine);
MagazineNode current1, current2;
int n = Int(list); if(index <= n + 1) { if(index == 1) { node.next = list; list = node; } else { current2 = list; current1 = list.next; for(int a = 1; a < index - 1; a++) { current2 = current2.next; current1 = current1.next; } if(current1 != null) { node.next = current1; current2.next = node; } else if(current1 == null) { current2.next = node; } } } else System.out.println("插入節點有問題!!!未進行添加!!!");
}
```
在這個方法裏面用到了一個小方法,對鏈表的擦汗年高度進行判斷,若是超了就會報錯。PP13.1的改寫則是徹底抄的課堂實踐進行的,很簡單,徹底的模仿(可能把以前的難關解決了就簡單了)
Integer.parseInt(String.valueOf(min.number)) > Integer.parseInt(String.valueOf(current.number))
即進行兩個數的比較。相似「三行的原則」把大小進行一個排序,可是是要接着後鏈表後面的東西進行。temp = min.number; min.number = numNode.number; numNode.number = temp;
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
public Exception ANewException { public ANewException(String message) { super(message); } }
- <span style="color:green">A.true - <span style="color:red">**B.false**
錯誤解析:定義幾乎是正確的,可是它必須定義一個類,而不是一個異常。異常是一個類,而ANewException應該擴展異常。類定義的標頭應該是public類的,ANewException擴展異常。
本週結對學習狀況
20172304方藝雯
20172323王禹涵
1.集合的同構和異構
2.動態數據結構和靜態數據結構
3.線性數據結構和非線性數據結構
4.Java集合類API
本週感受好忙,要對四則運算的內容進行後期處理,還要學習第十三章,還要學習四個實驗。對於十三章的內容,本覺得不多,可是在編程鏈的時候遇到了很大很大的困難,書上代碼看不懂,很蒙的作這課堂做業,好在思路清晰,寫的代碼也一次就成。可是對於next的節點問題仍是不夠透徹,應該在課下好好學習。其次,對於四則運算的代碼,可以很完整輸出計算,就像老師說的那樣看到小組成功的結果,感受頗有自豪感。可是在加分項目上作的仍是不夠好,對於去重的問題一直沒有思路就放棄了,並且想過用倒計時的問題,想去嘗試,但始終沒有成果,沒有應用到四則運算上,仍是有不少的遺憾...
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 136/136 | 1/1 | 15/15 | |
第二週 | 570/706 | 1/2 | 20/35 | |
第三週 | 613/1319 | 1/3 | 23/58 | |
第四周 | 1249/2568 | 1/5 | 30/88 | |
第五週 | 904/3472 | 1/6 | 30/118 | |
第六週 | 540/4012 | 1/7 | 30/118 | |
第七週 | 826/4838 | 1/7 | 30/178 | |
第八週 | 925/5763 | 2/9 | 45/223 | |
第九周 | 253/6016 | 2/10 | 55/278 | |
第十週 | 958/6974 | 1/11 | 55/333 |