首页 > 代码库 > LeetCode:Remove Nth Node From End of List

LeetCode:Remove Nth Node From End of List

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

For example,

   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.

思路:先从头遍历等到长度length,在从头遍历,根据当前结点次序与长度length和n的关系确定要删除的结点。

 1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode *removeNthFromEnd(ListNode *head, int n) {12         ListNode *p=head,*q;13         int length=0;14         while(p!=NULL)15         {16             length++;17             p=p->next;18         }19         p=head;20         head=q;21         q->next=p;22         while(p!=NULL)23         {24             if(length==n)25             {26                q->next=p->next;27                break;28             }29             else30             {31                 q=p;32                 p=p->next;33                 length--;34             }35         }36         return head->next;37     }38 };

 

LeetCode:Remove Nth Node From End of List