查找链表中倒数第k个值

查找链表中倒数第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;
}
​```
posted @ 2024-04-23 21:23  谁TM买小米啊  阅读(7)  评论(0编辑  收藏  举报