入參,煉表頭節點head, 要刪除的節點number
思路分析
如果未說明入參一定合法,按照防禦式程式設計的思想,需要對引數進行校驗。
單向鍊錶,並且未給出鍊錶長度,首先需要確認要刪除的節點位置
確定要刪除節點的位置,遍歷鍊錶按照鍊錶刪除節點的方法刪除該節點即可。注意單鏈表需要記錄前驅指標。
特殊情況的處理。如刪除的節點是首節點。
struct listnode ;
struct listnode* delnthnodefromend(struct listnode* head, int n)
// 這裡判斷引數是否合法
if (n > length || n <= 0)
delno = length - n; // 確認要刪除的節點的位置
// 刪除首節點特殊處理
if (delno == 0) else
prenode->next = curnode->next;
}return head;
}
這道題目是比較簡單的,相信大多數人都有自己的思路,這裡是自己的一些思考和解題思路,共勉。 刪除鍊錶中倒數第n個節點
刪除鍊錶中倒數第n個節點 給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。樣例 給出鍊錶1 2 3 4 5 null 和 n 2.刪除倒數第二個節點之後,這個鍊錶將變成1 2 3 5 null.definition for listnode.public class listnode pu...
刪除鍊錶中倒數第n個節點
給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。注意事項 鍊錶中的節點個數大於等於n 樣例 給出鍊錶1 2 3 4 5 null和 n 2.刪除倒數第二個節點之後,這個鍊錶將變成1 2 3 5 null.定義兩個指標,slow fast fast先先前走n步後 slow和fast一起走,直...
刪除鍊錶中倒數第n個節點
給定乙個鍊錶,刪除鍊錶中倒數第n個節點,返回鍊錶的頭節點。注意事項 鍊錶中的節點個數大於等於n 樣例 給出鍊錶1 2 3 4 5 null和 n 2.刪除倒數第二個節點之後,這個鍊錶將變成1 2 3 5 null.挑戰 o n 時間複雜度 如果先遍歷鍊錶,得出鍊錶結點個數,然後再第二次遍歷找出倒數第...