您的位置:首页 > 其它

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

2018-02-04 18:10 357 查看
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。


 注意事项


链表中的节点个数大于等于n

您在真实的面试中是否遇到过这个题? 

Yes

样例

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

 * 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 sum=0;

        ListNode *p,*p1;

        p=head;

        while(1){

            if(p==NULL){

                break;

            }

            sum++;

            p=p->next;

        }

        p=head;

        for(int i=0;i<sum;i++){

            if(i==sum-n){

                if(p==head){

                    head=p->next;

                    p->next=NULL;

                }else{

                    p1->next=p->next;

                    p->next=NULL;

                    p=p1->next;

                }

                return head;

            }

            p1=p;

            p=p->next;

        }

    }

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