/** * 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) { ListNode* quick_node=head; ListNode* del_node=head; for(int i=0;i<n;i++) quick_node=quick_node->next;//依旧是快慢指针思想 if(quick_node==NULL)//这里必须注意,如果删的是排头情况,写的时候只考虑了末尾情况,忘记排头了,极端就是一个节点的情况,,我好菜 { head=head->next; return head; } while(quick_node->next!=NULL) { quick_node=quick_node->next; del_node=del_node->next; } del_node->next=del_node->next->next;//删除 return head; } };
分析:
还是欠练啊我!