單鏈表:
1.public
classlinkedlist
9. }
10.
11.privatedata first =null;
12.
13.public
voidinsertfirst(object obj)
18.
19.publicobject deletefirst()throwsexception
26.
27.publicobject find(object obj)throwsexception
35. cur = cur.next;
36. }
37.return
null;
38. }
39.
40.public
voidremove(object obj)throwsexceptionelse
52. pre = cur;
53. cur = cur.next;
54. }
55. }
56. }
57.
58.public
booleanisempty()
61.
62.public
voiddisplay()
70. system.out.print("\n");
71. }
72.
73.public
static
voidmain(string args)throwsexception
87. }
1. 1 -> 2 -> 3 -> 4 ->
2. 2 -> 3 -> 4 ->
3. 2 -> 4 ->
4. null
5. 4
雙端鍊錶(不是雙向鍊錶):
與單向鍊錶的不同之處在儲存有對最後乙個鏈結點的引用(last)
deletelast::刪除表尾的鏈結點,由於只儲存了表尾的鏈結點,而沒有儲存表尾的前乙個鏈結點(這裡就體現出雙向鍊錶的優勢了),所以在刪除表尾鏈結點時需要遍歷以找到表尾鏈結點的前乙個鏈結點,需查詢n-1次,也就是o(n)
有了這幾個方法就可以用雙端鍊錶來實現乙個佇列了
1.public
classfirstlastlist
9. }
10.
11.privatedata first =null;
12.privatedata last =null;
13.
14.public
voidinsertfirst(object obj)
21.
22.public
voidinsertlast(object obj)else
30. last = data;
31. }
32.
33.publicobject deletefirst()throwsexception
42.
43.public
voiddeletelast()throwsexceptionelse
57. temp = temp.next;
58. }
59. }
60. }
61.
62.public
voiddisplay()
70. system.out.print("\n");
71. }
72.
73.public
static
voidmain(string args)throwsexception
85. }
1. 1 -> 2 ->
2. 1 -> 2 -> 3 ->
3. 2 -> 3 ->
4. 2 ->
有序鍊錶:鍊錶中的資料按從小到大排列
1.public
classsortedlist
9. }
10.
11.privatedata first =null;
12.
13.public
voidinsert(object obj)
23.if(pre ==null)
24. first = data;
25.else
26. pre.next = data;
27. data.next = cur;
28. }
29.
30.publicobject deletefirst()throwsexception
37.
38.public
voiddisplay()
47. system.out.print("\n");
48. }
49.
50.public
static
voidmain(string args)throwsexception
62. }
1. first -> last : 2 -> 80 -> 100 ->
2. 2
3. first -> last : 33 -> 80 -> 100 ->
4. first -> last : 33 -> 80 -> 99 -> 100 ->
表的插入和刪除平均需要比較n/2次,即o(n),但是獲取最小資料項只需o(1),因為其始終處於表頭,對頻繁操作最小資料項的應用,可以考慮使用有序鍊錶實現,如:優先順序佇列和陣列相比,
鍊錶的優勢在於長度不受限制
,並且在進行插入和刪除操作時,不需要移動資料項,故儘管某些操作的時間複雜度與陣列想同,實際
效率上還是比陣列要高很多
。劣勢在於隨機訪問
,無法像陣列那樣直接通過下標找到特定的資料項。
java資料結構之鍊錶
1,節點說明 package pku.ss.datastructure.linkedlist public class listnode listnode object theelement,listnode n object element 節點中的元素 listnode next 指向下乙個節點...
Java資料結構之鍊錶反轉
思路很簡單,定義乙個類,這個類分成2塊,一塊是表示自身的標誌,另外乙個儲存指向下乙個元素的引用。通過互換相鄰兩個節點的引用來達到鍊錶反轉的效果。上 package com.withiter.test public class reverselist public static node add st...
JAVA 資料結構之雙向鍊錶
啊,寫完了雙端之後,雙向就好寫多了,重點是改變結點的next指向的時候,一定要一起把previous改了,並且要注意可能在last結點處進行指向修改時存在的的null情況。package linklist 結點定義 class doublynode public void display 寫乙個雙向...