(超詳細) 動手編寫 — 連結串列 (Java實現)
阿新 • • 發佈:2020-09-13
[TOC]
## 前言
在前面的實現的動手寫個Java動態數組裡,雖然對於使用者而言,看是實現了動態擴容的功能,實際上,只是依託底層寫的方法`ensureCapacity`在陣列容量不足的時候,對重新申請一個原陣列1.5倍容量的新陣列,再將原有陣列中存放的元素複製到新陣列來,陣列指標指向新陣列,從根本上來說,這並不是真正的動態。
同時,陣列的拷貝,以及陣列申請的空間並未全部儲存元素,會降低效率,也會造成記憶體空間的浪費,但這對於連結串列來說,並不是個問題,連結串列是做到了用多少記憶體就申請多少記憶體空間,這才是真正的動態資料結構。
## 概念
**什麼是連結串列?**
連結串列是一種鏈式儲存的線性表,所有元素的記憶體地址不一定是連續的
**連結串列的結構**
對連結串列而言,資料是儲存在“結點”(Node)中的,可以使用一個數據域來儲存資料,這裡我稱為 element;然後結點中還有一個用來指向下一個結點位置的結點域,一般稱為 next。而對於連結串列的結尾,一般是以 NULL 作為結尾,所以連結串列中的最後一個結點的結點域 next 指向的是 NULL,圖示連結串列結構:
![在這裡插入圖片描述](//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9d87fd0e6b184fb4b5574c68f5b05a68~tplv-k3u1fbpfcp-zoom-1.image)
## **連結串列的設計**
```java
/**
* 定義連結串列第一結點,指向連結串列頭一個元素
*/
priv