1. 程式人生 > >Software-DataStructure 三年一直迷糊的鏈表

Software-DataStructure 三年一直迷糊的鏈表

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 constructor
10 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 }
View Code

Software-DataStructure 三年一直迷糊的鏈表