您的位置:首页 > Web前端 > Node.js

19 Remove Nth Node From End of List(去掉链表中倒数第n个节点Easy)

2015-06-14 15:27 615 查看
题目意思:去掉链表中倒数第n个节点

思路:1.两次遍历,没什么技术含量,第一次遍历计算长度,第二次遍历找到倒数第k个,代码不写了

   2.一次遍历,两个指针,用指针间的距离去计算。



  ps:特别注意删掉第一个节点的情况,在前面加个头结点,则变为了删除第二个节点的情况

/**
* 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) {
if(head==NULL||n==0)return NULL;
ListNode* ans=new ListNode(0);
ans->next=head;                             //加了一个头结点
ListNode *p1,*p2;
p1=p2=ans;
for(int i=0;i<n;++i){                       //p2指向第n+1个节点
p2=p2->next;
}
while(p2->next){                            //p2指向最后一个,p1指向倒数第n-1个
p2=p2->next;
p1=p1->next;
}
p1->next=p1->next->next;                    //删掉倒数第n个节点
return ans->next;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: