原创 斐波那契數列遞歸解法

Fibonacci數列 1 1 2 3 5 8 13 21 34 當前數是前兩項數之和 主要代碼如下 private static int Fibonacci(int n) { if (n == 0){

原创 java類的加載機制

類的加載機制 java虛擬機一般使用java類的流程:首先將開發者編寫的java源代碼編譯成字節碼文件,然後類加載器會讀取字節碼文件,並轉換成java.lang.Class對象,java虛擬機利用反射方式創建真正的對象。類加載器多

原创 ubuntu 執行apt-get install的時候報錯:無法獲得鎖 /var/lib/dpkg/lock -open(11:資源暫時不可用)

ubuntu 執行apt-get install的時候報錯:無法獲得鎖 /var/lib/dpkg/lock -open(11:資源暫時不可用) 這個問題看了好多人寫的,執行完下面命令之後發現還是執行不了apt-get 執行完這兩行之後,

原创 leetcode-7 整數反轉 java實現

題目: 給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。 注意:假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231,  231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。

原创 排序算法之歸併排序(六)

歸併排序:建立在歸併操作上的一種有效的排序算法,該算法是採用分治法(Divide and Conquer)的一個非常典型的應用。將已有序的子序列合併,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合併成一個有

原创 ArrayList源碼分析(jdk1.7)

ArrayList ArrayList是數組實現的線性表,容量不夠時會進行擴容。 public class ArrayList<E> extends AbstractList<E> implements List<

原创 線性表的鏈式存儲---單鏈表

單鏈表 單鏈表:n個結點鏈接成一個鏈表,就是線性表的鏈式存儲,因爲此鏈表的每個結點只包含一個指針域,所以叫做單鏈表。 結點由存儲數據元素的數據域和存儲指針的指針域組成 我們把單鏈表的第一個結點叫做頭指針,之後的每一個結點就是上

原创 不帶頭結點的雙向循環鏈表

基本概念 循環鏈表:將單鏈表中最後一個結點的next指向頭結點或者空指針,就使得整個單鏈表形成一個環,這種頭尾相接的單鏈表稱爲單循環鏈表,簡稱循環鏈表。 雙向鏈表:是在單鏈表的每個結點中,再設置一個指向其前驅結點的指針域pri

原创 棧的鏈式存儲結構

棧的鏈式存儲結構 我們知道棧是特殊的線性表,那麼棧的鏈式存儲和單鏈表很相似,就是簡化版的單鏈表,top是頭指針,插入完成之後要將頭指針指向棧頂元素。 鏈棧的代碼實現 結點結構 public class Node<T> {

原创 單鏈表與順序表的優缺點

簡單的對單鏈表和順序表做個對比: 1.存儲分配方式 順序表用連續的內存依次存儲線性表的數據元素 單鏈表用一組任意的存儲單元存放線性表的元素 2. 時間性能 順序表 單鏈表 查找 O(1) O(n) 插入 O

原创 隊列的鏈式存儲

隊列也是一種特殊的線性表,他的鏈式存儲和單鏈表基本相同,只是增加和刪除是固定了位置而已。 隊列的鏈式存儲叫做鏈隊列。一般將隊頭指針指向隊頭,而將隊尾指針指向隊尾。 鏈隊列的簡單實現 結點代碼如下 public class Nod

原创 循環隊列

循環隊列 隊列:只允許在一端進行插入,另一端進行刪除的線性表 循環隊列:隊列首尾相接的順序存儲結構稱作循環隊列。 隊列順序存儲的不足:順序存儲我們一般使用數組,那麼假設一個隊列有n個元素,首先需要建立一個大於n的數組,把所有元

原创 線性表的順序存儲

線性表的順序存儲 線性表的順序存儲結構:用一段地址連續的存儲單元依次存儲線性表的數據元素。 線性表的元素類型相同,用一段連續的地址存儲,可以使用數組來存儲實現線性表的順序存儲。 線性表的存儲結構代碼如下。 class MyAr

原创 LinkedList源碼分析(jdk1.7)

LinkedList LinkedList是雙向鏈表實現的線性表。 public class LinkedList<E> extends AbstractSequentialList<E> implements L

原创 LinkedList和ArrayList比較

LinkedList和ArrayList區別 底層數據結構不同,ArrayList底層數據結構是數組,LinkedList底層數據結構是雙向鏈表(1.7之後是雙向鏈表,1.7之前是雙向循環鏈表) ArrayList實現了Rand