文章

15

粉丝

0

获赞

6

访问

894

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

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

(1) 使用双指针,令两个指针相隔k - 1个结点,接着两个指针同时后移,在后的指针指向NULL时,在前的指针就会指向倒数第k个结点。

(2) 设置两个指针ptr1和ptr2指向头结点,先使用一个while循环令ptr2先向后移动k步,同时k--,循环中断条件为k == 0 || ptr2 == NULL,若循环结束后k不为0,那么说明查找失败,返回0;否则在ptr2后移完成后,再让两个指针同时后移,直至ptr2 == NULL时停止,此时ptr1指向的结点就是倒数第k个结点,输出ptr1的数据域,再返回1。

(3)
使用C语言实现的代码如下:

#include <stdio.h>
#include <stdlib.h>

typedef struct LNode {

    int data;     // 以整型作为data域类型

    struct LNode *next;
} LNode, *LinkList;

// 算法主体函数

int solution(LinkList list, int k) {

    LNode *ptr1 = list, *ptr2 = list;

    while (k != 0 || ptr2 != NULL) {

        ptr2 = ptr2 -> next;

        k--;

     }

     if (k != 0) return false;    // 循环结束后k不为0,那么说明查找失败

     while (ptr2 != NULL) {

          ptr1 = ptr1 -> next;

         ...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发