题目链接:https://leetcode.cn/problems/remove-nth-node-from-end-of-list/
该链表中,head节点对应有值
要想知道倒数第几个节点对应正序哪个节点,需要先进行遍历知道整个链表的长度
倒数第n个元素就是第len - n + 1个元素
然后让前一个结点指向当前节点的下一个节点便完成任务
code:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { int cnt = 0; ListNode* h2 = head; while(head != nullptr) { head = head->next; cnt ++; } // std::cout << cnt << std::endl; int pos = cnt - n + 1; if(pos == 1) return h2->next; ListNode* pre = nullptr; head = h2; for(int i = 1;i <= cnt;i ++) { if(i == pos) { /** // 1 if(head->next == nullptr) pre->next = nullptr; else { pre->next = head->next; } **/ // 2 pre->next = head->next; } pre = head; head = head->next; } head = h2; return head; } };