问题描述 :
给定一个链表,删除链表的顺数及倒数第 n 个节点。
示例1:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了顺数第2个及倒数第2个节点后,链表变为 1->3->5.
示例2:
给定一个链表: 1->2->3->4->5, 和 n = 3.
当删除了顺数第3个及倒数第3个节点后,链表变为 1->2->4->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
可使用以下代码,完成其中的removeNth函数,其中形参head指向无头结点单链表,n为要删除的结点序号,函数返回新链表的头指针。
#include<iostream>
using namespace std;
struct ListNode
{
int val;
ListNode *next;
ListNode() : val(0), next(NULL) {}
ListNode(int x) : val(x), next(NULL) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
class Solution {
public:
ListNode* removeNth(ListNode* head, int n) {