给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
/*** 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* fastpoint=(struct ListNode*) malloc(sizeof(ListNode));ListNode* slowpoint=(struct ListNode*) malloc(sizeof(ListNode));ListNode* dummy=(struct ListNode*) malloc(sizeof(ListNode));dummy->next=head;fastpoint=dummy;slowpoint=dummy;for(int i=1;i<=n;++i){fastpoint=fastpoint->next;} while(fastpoint->next!=NULL){fastpoint=fastpoint->next;slowpoint=slowpoint->next;}slowpoint->next=slowpoint->next->next;return dummy->next;}
};