數據結構的動態表示
html
隊列(queue):相似於列表,但隊列元素存取方式有限制,隊列採起先進先出(FIFO)的存取方式,即相似於生活中咱們排隊的狀況,咱們是從隊尾入隊,隊首出隊。
node
二叉樹(binary tree)上,每一個節點不能有超過兩個的子節點。
git
圖(graph):圖沒有相似於樹根節點那樣的初始入口點。在一個圖中,一個節點到另外一個節點的鏈接稱爲邊,鏈接一個圖內各節點的邊數通常沒有限制。
數組
數據結構_非線性結構_圖數據結構
問題1解決方案:以前理解的是:類就是具有某些共同特徵的實體的集合,它是一種抽象的數據類型,它是對所具備相同特徵實體的抽象。在面向對象的程序設計語言中,類是對一類「事物」的屬性與行爲的抽象。
對象就是一個真實世界中的實體,對象與實體是一一對應關係的,意思就是現實世界的每個實體都是一個對象,因此對象是一個具體的概念。
類是對象的集合,對象是類的實例;對象是經過new className產生的,用來調用類的方法;類的構造方法 。
這個理解是對的,可是我沒有看到他背後更根本的實現的方式。
ADT是一個包含數據和施加在這些數據類型上的操做的集合。對象實際上就是將相關變量和相關方法封裝在一塊兒的實體。對象隱藏了ADT背後的實現細節,而且將接口和底層的實現相分離,使得實現發生變化後並不影響接口。學習
問題2:class Node { int info; Node next; }
優化
實例化兩個Node對象,並使一個Node對象的變量next指向另外一個Node對象,從而將兩
個對象連接在一塊兒。第二個對象的引用變量next又可指向更三個Node對象,依次類推,最後創建
起一個鏈表。.net
我覺得我看懂了這句話,理解了鏈的結構,可是當在實現鏈表插入和刪除方法的時候,我才發現其實本身根本就沒有懂。(;´д`)ゞ
那麼鏈表到底怎麼理解呢?還有鏈表和LinkedList有什麼關係呢?用鏈表來進行數據管理有什麼好處呢?設計
LinkedList類(連接列表)
LinkedList實現了List接口,容許null元素。但除了有List中全部方法之外,還有get,remove,insert以及最開頭元素和最結尾元素等方法,而這些方法使得LinkedList既能當stack,queue和double-end queue(Deque)。
LinkedList是將每一個對象存放在獨立的內存空間中,並且,每一個空間中還保存有下一個連接的索引(若是是雙向鏈表,那麼它還保存了上一個連接的索引。Java是雙向鏈表)3d
對順序訪問進行了優化,向List中間插入與刪除得開銷不大,隨機訪問則相對較慢(由於LinkedList是必須從頭開始搜索,可用ArrayList代替)。它具備方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),linkedList也是不一樣步的。
再給你們一篇參考Linked List 鏈表詳解
鏈表是一種動態結構,一般是將它與靜態的數組相比較
相對於數組來講:
優勢: 經過索引(數組下標)能夠很快地訪問數組元素;
缺點: 插入/刪除元素須要對數組進行調整, 效率低;
而鏈表:
優勢:插入/刪除速度很快,並且不用對整個鏈表進行調整;
缺點:只能進行順序訪問,不能隨機訪問(像數組同樣用下標)。
index > 0
又給了我一個小經驗,必定注意循環的條件要好好設計。
若是J等於a的長度,返回false;若是j=b的長度而不等於a的長度,返回true;既不等於a的長度,又不等於b的長度,則調用遞歸計算(a,b,j+1)。我當時的判讀是反了的,應該是隻有當a的長度大於b的長度時,纔會返回true。
遞歸的狀況是用相同的參數調用本身的方法,因此n不會改變,所以若是(n-0)最初是正確的,它仍然是正確的。但當n>0時,永遠不可能爲基本狀況。邏輯我是理解的,可是給出的選項沒有理解好。
時間過得真的很快,一會兒這麼厚的一本課本就翻到了最後一頁。可是「學習本無底,前進莫徬徨。」
但說句實話,我對課本的掌握的仍是很差,因此我必定要好好複習,一有時間就該拿起課本看看,而不該該抱着學完就完事的想法,最後相告訴你們一句話
對世界上的一切學問與知識的掌握也並不是難事,只要鍥而不捨地學習,努力掌握規律,達到熟悉的境地,就能融會貫通,運用自如了。
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 127/127 | 1/1 | 25/25 | |
第二週 | 278/405 | 1/2 | 20/45 | |
第三週 | 442/847 | 1/3 | 20/65 | |
第四周 | 1063/1910 | 2/5 | 30/95 | |
第五週 | 840/2750 | 1/6 | 27/122 | |
第六週 | 631/3381 | 1/7 | 20/142 | |
第七週 | 914/4295 | 1/8 | 20/162 | |
第八週 | 2534/6829 | 2/10 | 30/192 | |
第九周 | 252/7081 | 3/13 | 26/218 | |
第十週 | 630/7711 | 1/14 | 27/245 |