Software-DataStructure 三年一直迷糊的鏈表
阿新 • • 發佈:2017-11-06
2-2 質變 scrip possible nal point com 構造 默認
2017-11-05 23:31:32 三年來其實一直迷糊的鏈表頓悟
三年前 2014年下半年一直未理解而死敲代碼,希望能量變引起質變的 數據結構中 鏈表的頓悟
(查找算法中的二分查找。排序中的快速排序已與2015年專攻 JavaScript 時理解突破了)
第一本 算法學習書《算法精解》以及讓我理解了排序和查找 分治算法的書
在學習 Java 描述的 數據結構時,對鏈表有了新的理解,FirstNode 的 插入及重置,默認構造函數的實現。
插入的部分:
newNode 不再存在,參數 newEntry 也是如此,行為像是一個局部變量。
繼續插入新的節點時,註意 Node 的兩個構造函數
1. 第一個構造函數 Node Pointer 為null, 為第一個節點所準備的。
2. 常規的鏈中的節點:有data,有 pointer. 與 Node自動對應。
1 public final class LinkedBag<T> implements BagInterface<T>{ 2 3 private Node firstNode; 4 private int numberOfEntries; 5 6 public LinkedBag() { 7 firstNode = null; 8 numberOfEntries = 0; 9 } // end default constructorView Code10 11 private class Node // private inner class 12 { 13 private T data; // Entry in bag 14 private Node next; // Link to next node 15 16 private Node(T dataPortion) 17 { 18 this(dataPortion, null); 19 } // end constructor 20 21 private Node(T dataPortion, Node nextNode)22 { 23 data = dataPortion; 24 next = nextNode; 25 } // end constructor 26 27 private T getData(){ 28 return data; 29 } 30 31 private void setData(T newData){ 32 data = newData; 33 } 34 35 private Node getNextNode(){ 36 return next; 37 } 38 39 private void setNextNode(Node nextNode){ 40 next = nextNode; 41 } 42 } 43 44 /** Adds a new entry to this bag. 45 * @param newEntry The object to be added as a new entry. 46 * @return True 47 */ 48 public boolean add(T newEntry) // OutOfMemoryError possible 49 { 50 // Add to beginning of chain. 51 Node newNode = new Node(newEntry); 52 //newNode.next = firstNode; // Make new node reference rest of chain. 53 //(first node is null if chain is empty) 54 newNode.setNextNode(firstNode); 55 56 firstNode = newNode; 57 numberOfEntries++; 58 59 return true; 60 }
Software-DataStructure 三年一直迷糊的鏈表