查找链表中倒数第k个值
/********************************************************************
*
* name : deletelinkedlist
* function : 假设该链表只给出了头指针 head。在不改变链表的前提下,请设计一个尽可能高效的算法,
* 查找链表中倒数第k(k为正整数个位置上的结点。若查找成功,算法输出该结点的data值,
* 并返回1,否则,只返回0
* argument :
* @Head :链表结构体头头节点地址
*
* retval : 返回1成功0失败
* author : 17647576169@163.com
* date : 2024-4-22
* note :
*
* *****************************************************************/
bool LList_FindDataPut(LList_t *Head, unsigned int k)
{
//备份链表头指针地址
LList_t *P = Head->next;
int x;
//循环判断链表节点数量
while (NULL == P->next)
{
x++;
}
//数组中不足K个节点
if (x < k)
{
return false;
}
LList_t *P1 = Head->next;
//循环找的倒数第K个节点
for (int i = 0; i <= x - k; i++)
{
P1 = P1->next;
}
//输出data值
printf("data=%d\n", P1->data);
return true;
}
```