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

/*************************************************************************
*
* 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;
}

浙公网安备 33010602011771号