如果讓你儲存多個物件,你第一時間想到的肯定是陣列,但是如果讓你儲存多個任意物件呢?這時我們會想到用object型的陣列來解決。
object data = new object[3];
但是陣列是乙個長度固定的線性結構,在實際開發中,不論我們的內容不足或過多,都有可能造成空間的浪費,所以我們可以使用乙個鍊錶來動態儲存資料,就像火車車廂的設計,長度不固定,有多少資料就儲存多少資料。
單鏈表:
class
node
public object getdata()
public
void
setdata
(object data)
public node getnext()
public
void
setnext
(node next)
}public
class
singlelinkedlist
public
static
void
printlink
(node node)
}}
思考:鍊錶和陣列的區別
在實際開發中,我們用的更多的是雙向鍊錶。那麼雙向鍊錶與單向鍊錶的區別又是啥呢?其實雙向鍊錶只是在查詢前乙個節點的時候進行了優化,時間複雜度變為了o(1)。
雙向鍊錶:
在單鏈表裡,掛載在客戶端實現,模擬生活中坐火車,我們只是乘坐,而不需要把火車的車廂連在一起,那麼如何解決呢?
在雙向煉表裡有乙個新的類link
:負責節點之間的動態掛載,node
負責節點內容的設定,真實儲存內容,ilink
表示如果link類的結構發生了變化,就需要更改客戶端**,為了避免這種情況,就讓使用者直接使用ilink介面。
}//根據指定索引取得具體的節點
private node node
(int index)
return temp;
} node temp=
this
.last;
for(
int i=size-
1;i>index;i--
)return temp;
}/**
* 判斷指定索引是否合法
*/private
boolean
islinkedindex
(int index)
/** * 刪除節點
*/private object unlink
(node x)
else
if(next==null)
else
x.data = null;
this
.size--
;return elementdata;}}
public
class
doublelinkedlist
}
Java單鏈表(雙端鍊錶)簡單實現
1 節點資料結構 public class linknode public linknode int value 2 單鏈表實現 public class singlelink public void insertfirst int value else public intdeletefirst ...
鍊錶的實現 單鏈表 雙鏈表
鍊錶知識的引入 對於之前我們接觸到的陣列知識,要想儲存多個物件,首先想到的一定是物件陣列。但是陣列是乙個長度固定的線性結構,一旦內容不足或者過多,都會在成記憶體資源的浪費,由此引入鍊錶充分解決資源浪費問題。class node private屬性需要設定getter setter方法 public ...
單鏈表和雙向鍊錶反轉 java
題目要求 反轉單向和雙向鍊錶 題目 分別實現反轉單向鍊錶和反轉雙向鍊錶的函式。要求 如果鍊錶長度為n,時間複雜度要求為o n 額外空間 複雜度要求為o 1 public class e7 reverselink public static node reverselist node head ret...