leetcode:Remove Nth Node From End of List

来源:互联网 发布:matlab黄金分割算法 编辑:程序博客网 时间:2024/05/16 10:08
/** * 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 *kp=head;  ListNode *mp=head;  ListNode *pre=mp;  int step=0;  while(kp->next!=NULL && step<n-1 )  {      kp=kp->next;      step++;  }  while(kp->next!=NULL)  {      kp=kp->next;      pre=mp;      mp=mp->next;  }  if(pre==head && pre==mp)  {      head=pre->next;      pre->next=NULL;      delete pre;  }  else  {      pre->next=mp->next;      mp->next=NULL;      delete mp;  }    return head;    }};

0 0
原创粉丝点击