給定乙個鍊錶,刪除鍊錶的倒數第n個節點,並且返回頭結點
兩次遍歷:首先第一次遍歷的得到長度。
第二次遍歷時,因為刪除節點需要有被刪除節點的前乙個節點。考慮到只有乙個節點、兩個節點的情況這種極端情況。需要定義乙個head前指標
listnode p1 = head;
int len=0;
while
(p1!=null)
int rem = len-n;
/*因為刪除節點需要有被刪除節點的前乙個節點。
考慮到只有乙個節點、兩個節點的情況
需要定義乙個head前指標
* */
listnode prehead =
newlistnode(0
);prehead.next = head;
listnode curhead = prehead;
while
(rem!=0)
curhead.next = curhead.next.next;
return prehead.next;
一次遍歷。使用兩個指標。先讓快指標走一定距離,然後和慢指標一起走,當快指標到達結尾null時慢指標正好的到達被刪除結點 的pre。
listnode prehead =
newlistnode(0
);prehead.next = head;
listnode first = prehead;
listnode second = prehead;
for(
int i=
1;i<=n+
1;i++
)while
(first!=null)
second.next = second.next.next;
return prehead.next;
19 刪除鍊錶的倒數第N個節點(快慢指標)
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?讓快指標先走n步,然後快慢指標一起走,這樣兩個指標始終儲存n步的...
專題 鍊錶雙指標問題(快慢指標 相遇指標)
雙指標 分別指向兩個鍊錶,每個鍊錶各自乙個指標 快慢指標 指向同乙個鍊錶,一前一後,前進速度不同 相遇指標 指向同乙個有環鏈表,一前一後,前進速度不同 面試題22.鍊錶中倒數第k個節點 definition for singly linked list.public class listnode c...
快慢指標 雙指標
雙指標 二 左右指標的常用演算法 鏈結 利用快慢指標 最開始slow與fast指標都指向鍊錶第乙個節點,前者解決主要解決鍊錶中的問題,listnode detectcycle listnode head slow head while slow fast return slow 設相遇點距環的起點的...