文章
8
粉丝
41
获赞
0
访问
258
(1)算法基本设计思想
采用双指针法:定义两个指针(快指针 fast 、慢指针 slow ),初始均指向头结点。先让 fast 移动 k 步,若中途 fast 为空(说明 k 超过链表长度),直接返回 0。否则,让 fast 和 slow 同步后移,直到 fast 指向链表末尾。此时 slow 指向的就是倒数第 k 个节点。
(2)算法实现步骤
1. 检查 k 的合法性,若 k \leq 0 ,直接返回 0。
2. 初始化 fast 和 slow 均指向头结点 list 。
3. fast 先移动 k 步,每移动一步检查 fast 是否为空,若为空则返回 0( k 超过链表长度)。
4. 同步移动 fast 和 slow ,直到 [fast](coco://sendMessage?ext=%7B%22s%24wiki_link%22%3A%22https%3A%2F%2Fm.baike.com%2Fwikiid%2F7273017892579688463%22%7D&msg=fast) 的下一个节点为空。
5. 此时 slow 指向倒数第 k 个节点,输出其 data 并返回 1;若链表为空等异常,返回 0。
(3)C 语言实现
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构
typedef struct Node {
int data;
struct N...
登录后发布评论
暂无评论,来抢沙发