查找链表中倒数第k个位置上的结点并输出·结点的data值

数据结构

链表

笔试题2:设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则只返回 0。
image

/*************************************************************************
 *
 *  file name:  2.c
 *  author   :  lu.ciana.598393@gmail.com
 *  date     :  2024/04/22
 *  function :  设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则只返回 0。
 *  note     :  None
 *  CopyRight (c)   2024    lu.ciana.598393@gmail.com   All Right Reserved
 *
 **************************************************************************/
#include <stdio.h>
#include <stdlib.h>

bool Linked_Find(Linked_t* L,int k)
{
	Linked_t* last = L;
    Linked_t* pre = L;
    if (L->next == NULL)
    {
        printf("链表为空 无法删除\n");
        return 0;
    }
    //让last先往前走k步
    for(i=0;i<k-1;i++)
        last = last->next;
    //使last指向末尾,pre指向链表中倒数第k个位置上的结点
    while(last->next)
    {
        last = last->next;
        pre = pre->next;
        i++;
    }
    //判断k的位置是否超过链表范围
    if(i<k)
    {
        printf("输入的位置不正确\n");
    	return 0;
    }
    printf("%d\n",pre->data);
    return 1;
}
posted @ 2024-04-23 03:27  luxiaolim  阅读(11)  评论(0编辑  收藏  举报