文章

8

粉丝

41

获赞

0

访问

258

头像
【2009年】408计算机统考真题模拟考试 - 第42题答案笔记
数据结构
发布于2025年4月2日 16:05
阅读数 79

计算机考研408统考历年真题及答案解析

(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...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发