/*
仅用一次循环删除单链表倒数第k个节点 并做健壮性判断
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct _Node{int v;struct _Node *nxt;} Node,*pNode,*List;
_Bool deleteKth_From_EndPoint(List list,int k){
if(!list || !(k > 0))return 0;
pNode fast = list,
slow = list,
prev = NULL;
while(k -- && fast)fast = fast->nxt;
if(k)return 0;
while(fast){
fast = fast->nxt;
slow = ( prev = slow )->nxt;
}
if(prev){
prev->nxt = slow->nxt;free(slow);
return 1;
}
return 0;
}
快慢双指针删除链表倒数第K个节点
最新推荐文章于 2026-06-17 22:30:32 发布
本文介绍了如何使用C语言中的单次循环实现删除单链表中的倒数第k个节点,同时考虑了健壮性判断,确保在输入错误或链表为空的情况下返回正确结果。

621

被折叠的 条评论
为什么被折叠?



