#include<iostream>
#include <cstdio>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* createList(int a[],int n){
ListNode* head=NULL,*rear;
for(int i=0;i<n;i++){
ListNode* temp=new ListNode(a[i]);
if(head==NULL){
head=temp;
rear=head;
}else{
rear->next=temp;
rear=rear->next;
}
}
return head;
}
void printList(ListNode* head){
ListNode* pos=head;
while(pos){
cout<<pos->val<<" ";
pos=pos->next;
}
}
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* rList[10000];
ListNode* p=head,*prior;
int i=0;
if(head==NULL)
return head;
while(p!=NULL){
rList[i++]=p;
p=p->next;
}
int size=i;
p=rList[size-n];
if(size-n>0)
{
prior=rList[size-n-1];
prior->next=p->next;
delete p;
}
else
{
head=p->next;
delete p;
}
return head;
}
int main(int argc,char *argv[])
{
int v[5]={1,2,3,4,5};
ListNode* p=createList(v,5),*result;
result=removeNthFromEnd(p, 2);
printList(result);
return 0;
}
19. Remove Nth Node From End of List
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.