1、查找链表倒数第k个节点
思路:
- 两个指针,按照正常的思路是,先找到第k个节点,然后两个指针一起移动,答案的思路比较好,只需要一个for循环就可以解决。加了一个判断条件,在未到达第k个节点的时候,计数器+1,到了则移动第二个指针
代码:
//2、查找链表倒数第k个节点
typedef struct node{
int data;
struct node *next;
}*list;
int findrek(list head, int k){
struct node *first = head, *second = head;
int i = 0;
while(first != NULL){ //找到第k个元素
if(i < k){ //不到第k个数,继续找
i++;
}
else{ //到了的话,第二个指针一起移动
second = second->next;
}
first = first->next;
}
if(i == k){ //找到了
printf("%d ",second->data);
return 1;
}
else{ //未找到
return 0;
}
}
本文介绍了一种高效查找链表中倒数第K个节点的方法,使用双指针技巧仅通过一次遍历即可实现。适用于面试及实际应用。
550

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



