文章目錄
1常見的數據結構
1.1 數組(Array)
在程序設計中,爲了處理方便,把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱爲數組。
在C語言中,數組屬於構造數據類型。一個數組可以分解爲多個數組元素,這些數組元素可以是基本數據類型或是構造類型。
因此按數組元素的類型不同,數組又可分爲數值數組
、字符數組
、指針數組
、結構數組
等各種類別
1.2 棧(Stack)
棧是隻能在某一端插入和刪除的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)
1.3 對列(Queue)
一種特殊的線性表,它只允許在表的前端(front
)進行刪除操作,而在表的後端(rear
)進行插入操作。進行插入操作的端稱爲隊尾,進行刪除操作的端稱爲對頭。隊列中沒有元素時,稱爲空隊列
1.4 鏈表(Linked List)
一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接
次序實現的
鏈表由一系列結點(鏈表中的每一個元素稱爲結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:
一個是存儲數據元素的數據域
,另一個是存儲下一個結點地址的指針域
1.5 樹(Tree)
樹是包含n(n>0)
個結點的有窮集合K
,且在K
中定義了一個關係N
,N
滿足以下條件:
- 有且僅有一個結點K0,它對於關係
N
來說沒有前驅,稱K0爲樹的根結點,簡稱爲根(root
) - 除K0外,
K
中的每個結點,對於關係N
來說有且僅有一個前驅 K
中各結點,對關係N
來說可以有m
個後繼(m>=0
)
1.6 堆(Heap)
在計算機科學中,堆是一種特殊的樹形數據結構,每個結點都有一個值。
通常我們所說的對的數據結構,是指二叉堆。
堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆
1.7 圖(Graph)
圖是由結點的有窮集合V
和邊的集合E
組成。
其中,爲了與樹形結構加以區別,在圖結構中常常將結點稱爲頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關係
1.8 散列表(Hash)
若結構中存在關鍵字和K
相等的記錄,則必定在f(K)
的存儲位置上。
由此,不需比較便可直接取得所查詢的記錄,稱這個對應關係f
爲散列函數(Hash function
),按這個思想建立的表爲散列表
2 XML解析
2.1 JDOM解析
爲減少DOM、SAX
的編碼量,出現了JDOM
優點:20-80
原則,極大地減少了代碼量。
使用場合:要實現的功能簡單,如解析、創建等,但在底層,JDOM
還是使用SAX,DOM,Xanan
文檔
2.2 SAX解析
爲解決DOM
的問題,出現了SAX
,SAX
事件驅動。當解析器發現元素開始,元素結束,文本、文檔的喀開始或結束等時發送事件,程序員編寫響應這些事件的代碼,保存數據
優點:不用事先調入整個文檔,佔用資源小。SAX
解析器代碼比DOM
解析器代碼小,適用於Applet
下載
缺點:不是持久的,事件過後若沒保存數據,那麼數據就丟了。無狀態性,從事件中只能得到文本,但不知該文本屬於哪個元素
使用場合:Applet
,只需XML
文檔的少量內容,很少回頭訪問,機器內存少
2.3 DOM解析
爲XML
文檔的已解析版本定義了一組接口。解析器讀入整個文檔,然後構建一個駐留內存的樹結構,然後代碼就可以使用DOM
接口來操作這個樹結構
優點:整個文檔樹在內存中,便於操作,支持刪除、修改、重新排列等多種功能
缺點:將整個文檔調入內存中(包括無用的節點),浪費時間和空間
使用場合:一旦解析了文檔還需多次訪問這些數據,硬件資源充足(內存、CPU
)
2.4 DOM4J解析
DOM4J
是一個非常優秀的Java XML APL
,具有性能優異,功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。
如今可以看到越來越多的Java
軟件都在使用DOM4J
來讀寫XML
,特別值得一提的是連Sun
的JAXM
也在用DOM4J