您的位置:首页 > 其它

删除链表中倒数第n个节点

2016-04-15 13:56 218 查看
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。

样例:

给出链表1->2->3->4->5->null和 n = 2.
删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.


注意事项


链表中的节点个数大于等于n。特别注意m == n 的情况,实际删除的是头结点。
/**
* Definition of ListNode
* class ListNode {
* public:
*     int val;
*     ListNode *next;
*     ListNode(int val) {
*         this->val = val;
*         this->next = NULL;
*     }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @param n: An integer.
* @return: The head of linked list.
*/
ListNode *removeNthFromEnd(ListNode *head, int n) {
// write your code here
//int m = head.size();不能用size()函数
ListNode* result = head;
ListNode* l1 = head;
int m =0;
while(head!=NULL){  //计算链表的长度size()
head = head->next;
m++;
}
if(m<n) //不存在这种情况
return result;
if(m>n){
for(int i =1;i<(m-n);i++){
l1 = l1->next;
}
l1->next=l1->next->next;
return result;
}
if(m == n){ //当m == n时,实际上删除的是头结点
return result->next;
}

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: