LeetCode19. Remove Nth Node From End of List

Posted wilderness

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode19. 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.

题意:给出一个链表,删除倒数第n个节点

刚在书上见过这个题,思路是用双指针,p1,p2,先让p2走n步,然后p1,p2一块走,当p2停止的时候,

p1->next正好指向要删除的节点,不过要注意:

当p2停止的时候,n还没变为0,这时候要验证n的值,当n>0时候,p1指向的节点就是要删除的节点

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     struct ListNode *next;
 6  * };
 7  */
 8 struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
 9     if(head==NULL)
10         return head;
11     struct ListNode *p1,*p2,*tmp;
12     p1=head;
13     p2=head;
14     while(n>0&&p2->next!=NULL){
15         p2=p2->next;
16         n--;
17     }
18     if(n>0){
19         tmp=p1;
20         head=p1->next;
21         free(tmp);
22     }
23     else
24     {
25     while(p2->next!=NULL){
26         p2=p2->next;
27         p1=p1->next;
28     }
29     tmp=p1->next;
30     if(tmp!=NULL){
31         p1->next=tmp->next;
32         free(tmp);
33     }
34     }
35     return head;
36 }

 

以上是关于LeetCode19. Remove Nth Node From End of List的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode19. Remove Nth Node From End of List

leetcode 19. Remove Nth Node From End of List

LeetCode 19. Remove Nth Node From End of List

[LeetCode] 19. Remove Nth Node From End of List

Leetcode 19. Remove Nth Node From End of List(python)

LeetCode(19) - Remove Nth Node From End of List