Java資料結構之鍊錶 動力節點Java學院整理

2021-08-08 17:36:29 字數 4279 閱讀 8166

單鏈表

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 寫乙個雙向...