C語言刪除鍊錶的倒數第N個節點

2021-09-21 01:35:35 字數 670 閱讀 1292

給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。

給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.

當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.

說明:給定的 n 保證是有效的。

struct listnode* removenthfromend(struct listnode* head, int n) 

//fastp為快指標,slowp為慢指標(用於指向待刪除結點),slowp指向待刪除結點的前驅結點。

struct listnode *fastp=null,*slowp=null,*slowq=null;

//先讓快指標後跑n個結點

for(fastp=head;n>0;fastp=fastp->next,n--);

slowp=head;

//然後讓快指標和慢指標一起向後跑,slowp為slowq的聯動指標

//當快指標跑到null時停止,這時候快指標一定指向待刪除結點

while(fastp)

//如果要刪除的結點為頭結點,需要單獨處理。否則,利用slowq->next=slowp->next即可刪除結點

if(slowp==head)else

return head;

}

刪除鍊錶倒數第N個節點

1.問題 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.2.演算法 暴力破解法 先計算得出鍊錶的長度m,然後將鍊錶長度和所給倒數字置相減,即loc m n 1,得出刪除節點的前...

刪除鍊錶倒數第n個節點

leetcode 題目 給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.note n 鍊錶長度時,刪除頭節點 n 0時,不做任何操作。當第乙個指標first 比第二個指標領先n步,然後...

刪除鍊錶的倒數第N個節點

與查詢鍊錶的倒數第n個節點對比只改動了一行 查到倒數第n個節點後,將該節點的後續指標p1.next p1.next.next 即可 package 鍊錶中 public class nthnodefromendoflist return m 刪除倒數第n個節點 param args public s...