您的位置:首页 > 其它

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

2017-03-26 15:16 465 查看


问题描述:

给定一个链表删除链表中倒数第N个节点,返回链表的头结点。链表中的节点个数大于等于N。

实现思路:

首先, 利用FOR循环得到链表的总节点数,count从零开始记数;链表中的倒数第N个节点,就是该链表的第N-count+2个节点;如果删除的是第一个节点就返回head->next。如果不是第一个节点,利用For循环先找到第N-count+1个节点P ,               然后p->next=p->next->next,这样就删除了该链表的倒数第N个节点。

实现代码:

 ListNode *removeNthFromEnd(ListNode *head, int n) {

        if (head == NULL) {

            return NULL;

        }

        int count = 0;

        ListNode *p, *q;

        for (p= head; p->next!= NULL; count++)

        { p= p->next;}

        int i= 1;

        if(count-n+1==0)

            return head->next;

        for ( p= head; i< count-n+1; i++)

          { p= p->next;}

         q= p->next;

         p->next= q->next;

         delete q;

         return head;

     }

感想:

一开始没有考虑到删除第一个节点的情况,直接return head,无法实现删除。




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