20191026-leetcode-19. 刪除鏈表的倒數第N個節點

分析:鏈表刪除操作。

兩種方法,可以兩遍遍歷刪除,也可以一遍遍歷(雙指針方法)。
第一種,兩遍遍歷。
鏈表刪除操作,記得在頭結點前加一個預處理結點,用來防止鏈表就頭結點一個元素,刪除爲空的情況!一開始就是因爲忘記加預處理結點錯了。

/**c
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) 
    {
        ListNode *p=head;
        ListNode *ans=new ListNode(-1);       //申請一個輔助頭結點,處理刪除爲空的情況
        ans->next=head;    
        ListNode *q=ans;
        int len=0;
        while(p){len++;p=p->next;}       
        for(int i=1;i<=len-n;i++) {q=q->next;}
        q->next=q->next->next;
        return ans->next;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章