在分析鏈表之前,我們先來對之前的動態(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í)如何如何在鏈表中添加元素。