精品丰满熟女一区二区三区_五月天亚洲欧美综合网_亚洲青青青在线观看_国产一区二区精选

  • <menu id="29e66"></menu>

    <bdo id="29e66"><mark id="29e66"><legend id="29e66"></legend></mark></bdo>

  • <pre id="29e66"><tt id="29e66"><rt id="29e66"></rt></tt></pre>

      <label id="29e66"></label><address id="29e66"><mark id="29e66"><strike id="29e66"></strike></mark></address>
      學習啦 > 知識大全 > 知識百科 > 百科知識 > java什么是鏈表

      java什么是鏈表

      時間: 歐東艷656 分享

      java什么是鏈表

        鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(鏈表中每一個元素稱為結(jié)點)組成,結(jié)點可以在運行時動態(tài)生成。每個結(jié)點包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點地址的指針域。 相比于線性表順序結(jié)構(gòu),操作復雜。由于不必須按順序存儲,鏈表在插入的時候可以達到O(1)的復雜度,比另一種線性表順序表快得多,但是查找一個節(jié)點或者訪問特定編號的節(jié)點則需要O(n)的時間,而線性表和順序表相應的時間復雜度分別是O(logn)和O(1)。

        鏈表(Chain本文所說鏈表均為單向鏈表,以下均簡稱單向鏈表)實際上是由節(jié)點(Node)組成的,一個鏈表擁有不定數(shù)量的節(jié)點。而向外暴露的只有一個頭節(jié)點(Head),我們對鏈表的所有操作,都是直接或者間接地通過其頭節(jié)點來進行的。

        節(jié)點(Node)是由一個需要儲存的對象及對下一個節(jié)點的引用組成的。也就是說,節(jié)點擁有兩個成員:儲存的對象、對下一個節(jié)點的引用。

        這樣說可能大家不是很明白,我貼一張圖大家可能更容易理解。

        那么大家可能清除了,為什么說有了頭節(jié)點就可以操作所有節(jié)點。因為有著不斷的引用嘛!

        那么在鏈表里的屬性大概就只有兩個了:頭節(jié)點和節(jié)點數(shù)量。當然,根據(jù)需要,我們通常需要更多的屬性。

        簡單的鏈表可以寫為下面的樣子:

        1 package myChain;

        2

        3 /**

        4 * (單向)鏈表

        5 *

        6 * @author Johness

        7 */

        8 public class PersonChain {

        9 private PersonChainNode head; // 頭節(jié)點

        10 private int size; // 鏈表的實體(即節(jié)點的數(shù)量)

        11 private int modCount; // 鏈表被操作的次數(shù)(備用)

        12

        13 /**

        14 * 獲得鏈表中節(jié)點數(shù)量

        15 *

        16 * @return 鏈表中節(jié)點數(shù)

        17 */

        18 public int getSize() {

        19 return this.size;

        20 }

        21

        22 /**

        23 * 添加節(jié)點的一般方法

        24 *

        25 * @param p

        26 * 添加到鏈表節(jié)點的對象 由于實現(xiàn)細節(jié),作為唯一標識,同一個編號的Person只能添加一次

        27 */

        28 public void addNode(Person p) {

        29 if (!contains(p.personNo)) { // 如果鏈表中沒有該對象,則準備添加

        30 if (head != null) { // 如果有頭節(jié)點,則添加新節(jié)點作為頭節(jié)點

        31 head = new PersonChainNode((myChain.Person) p, head);

        32 size++;

        33 modCount++;

        34 } else { // 如果沒有頭節(jié)點,則添加對象作為頭節(jié)點

        35 head = new PersonChainNode((myChain.Person) p, null);

        36 size++;

        37 modCount++;

        38 }

        39 }

        40 }

        41 }

      java什么是鏈表

        以上的代碼就是一般鏈表的骨架了。擁有兩個重要屬性。

      245839