3.1鏈表(Linked List)

在分析鏈表之前,我們先來對之前的動態(tài)數(shù)組、棧、隊列總結(jié)一下:
(1)底層依托于靜態(tài)數(shù)組
(2)依靠resize解決固定容量問題

image.png

(3)是一種假的的動態(tài)數(shù)據(jù)結(jié)構(gòu)
1.什么是鏈表

可以從以下兩個部分來理解什么是鏈表:
(1)最簡單的動態(tài)數(shù)據(jù)結(jié)構(gòu),是一種真正的動態(tài)數(shù)據(jù)結(jié)構(gòu);
(2)是一種數(shù)據(jù)的存儲方式,數(shù)據(jù)存儲在"節(jié)點"(Node)中

1.1結(jié)構(gòu)基本代碼:

class Node{
  E e;
  Node next;
}

1.2 圖示如下:

鏈表結(jié)構(gòu).png

1.3 優(yōu)點、缺點*
優(yōu)點:真正的動態(tài),不需要處理固定容量的問題
缺點:喪失了隨機訪問的能力,也就是不能通過索引進(jìn)行訪問,只能next來進(jìn)行查找
1.4數(shù)組與鏈表的對比
image.png

** 1.5 基本的鏈表節(jié)點結(jié)構(gòu)代碼:**
新建一個package(LinkedList),然后新建一個類LinkedList,在該類中封裝一個私有的節(jié)點.

package LinkedList;

public class LinkedList<E> {
    //將Node節(jié)點設(shè)計成私有的類中類
    private class Node<E> {
        public E e;
        public Node next;


        //兩個參數(shù)的構(gòu)造函數(shù)

        public Node(E e, Node next) {
            this.e = e;
            this.next = next;
        }

        //一個參數(shù)的構(gòu)造函數(shù)
        public Node(E e) {
            this.e = e;
            this.next = null;
        }

        //無參構(gòu)造函數(shù)
        public Node() {
            this(null, null);
        }

        @Override
        public String toString() {
            return e.toString();
        }
    }
}

在本小節(jié)中先是簡單了解了一下理論知識,然后把基本的鏈表節(jié)點結(jié)構(gòu)使用代碼來實現(xiàn),下一小節(jié)我們繼續(xù)來學(xué)習(xí)如何如何在鏈表中添加元素。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容