Java中鏈表是一種常用的數(shù)據(jù)結(jié)構(gòu),它可以動態(tài)地添加和刪除節(jié)點(diǎn),有兩種主要的插入方法:頭插法和尾插法。
頭插法
頭插法是指將新節(jié)點(diǎn)插入到鏈表的頭部,這樣新節(jié)點(diǎn)成為了鏈表的第一個節(jié)點(diǎn),原來的鏈表成為新節(jié)點(diǎn)的后繼節(jié)點(diǎn),實現(xiàn)代碼如下:
public ListNode insertHead(ListNode head, int val) {
ListNode newNode = new ListNode(val);
if (head == null) {
head = newNode;
} else {
newNode.next = head;
head = newNode;
}
return head;
}
其中,ListNode
是鏈表的一個節(jié)點(diǎn)類,head
是鏈表的頭節(jié)點(diǎn),val
是要插入的新節(jié)點(diǎn)的值。
尾插法
尾插法是指將新節(jié)點(diǎn)插入到鏈表的尾部,這樣新節(jié)點(diǎn)成為了鏈表的最后一個節(jié)點(diǎn),原來的鏈表成為新節(jié)點(diǎn)的前驅(qū)節(jié)點(diǎn),實現(xiàn)代碼如下:
public ListNode insertTail(ListNode head, int val) {
ListNode newNode = new ListNode(val);
if (head == null) {
head = newNode;
} else {
ListNode tail = head;
while (tail.next != null) {
tail = tail.next;
}
tail.next = newNode;
}
return head;
}
其中,head
是鏈表的頭節(jié)點(diǎn),val
是要插入的新節(jié)點(diǎn)的值,ListNode
是鏈表的一個節(jié)點(diǎn)類。我們先判斷鏈表是否為空,如果是,則將新節(jié)點(diǎn)作為頭節(jié)點(diǎn)返回就行了;如果不是,則遍歷鏈表,找到最后一個節(jié)點(diǎn),然后將新節(jié)點(diǎn)插入到最后一個節(jié)點(diǎn)的后面即可。