Remove Nth Node From End of List问题及解法

    xiaoxiao2021-03-25  155

    问题描述:

    Given a linked list, remove the nth node from the end of list and return its head.

    示例:

    Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.

    问题分析:

    一个简单的链表删除结点的算法

    1.先遍历一边链表,存住结点索引

    2.找到具体删除结点,进行删除,返回链表头结点

    下面是我的代码:

    /** * 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) { vector<ListNode*> link; ListNode* del(0);// 待删除的结点 while(head != NULL) { link.push_back(head); head = head->next; } if(n == link.size())// 删除的是第一个元素 { del = link[0]; head = del->next; return head; } else { del = link[link.size() - n]; ListNode* ex_del = link[link.size() - n - 1]; ex_del->next = del->next; return link[0]; } } };

    转载请注明原文地址: https://ju.6miu.com/read-2571.html

    最新回复(0)