LeetCode---19. チェーンテーブルの最後からN番目のノードを削除(C言語実装)
1084 ワード
テーマの出所:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/description/
問題の説明:
チェーンテーブルが与えられ、チェーンテーブルの最後からn番目のノードが削除され、チェーンテーブルのヘッダノードが返される.
例:
説明:
与えられたn保証は有効である.
コードは次のとおりです.
問題の説明:
チェーンテーブルが与えられ、チェーンテーブルの最後からn番目のノードが削除され、チェーンテーブルのヘッダノードが返される.
例:
: 1->2->3->4->5, n = 2.
, 1->2->3->5.
説明:
与えられたn保証は有効である.
コードは次のとおりです.
struct ListNode* removeNthFromEnd(struct ListNode* head, int n) {
// 0,
if(n==0){
return head;
}
//fastp ,slowp ( ),slowp 。
struct ListNode *fastp=NULL,*slowp=NULL,*slowq=NULL;
// n
for(fastp=head;n>0;fastp=fastp->next,n--);
slowp=head;
// ,slowp slowq
// NULL ,
while(fastp){
slowq=slowp;
slowp=slowp->next;
fastp=fastp->next;
}
// , 。 , slowq->next=slowp->next
if(slowp==head){
head=head->next;
}else{
slowq->next=slowp->next;
free(slowp);
}
return head;
}