查找单向链表中倒数第k(k为正整数)个位置上的结点,查找成功输出该结点的data值,并返回1,否则只返回0

image

/******************************************************
 *
 *  name      :  FindKNode
 *	function  :  查找链表中倒数第k(k为正整数)个位置上的结点
 *               查找成功输出该结点的data值,并返回1,否则只返回0
 *  argument
 *               @head : 链表头结点的地址
 *               @k    : 需要查找的位置
 *
 *  retval    : 成功返回1,否则返回0
 *  author    : Dazz
 *  date      : 2024/4/22
 *  note      : None
 *
 * *******************************************************/
bool FindKNode(LinkList_t *head, unsigned int k)
{
    // 错误处理
    if (NULL == head)
    {
        printf("请输入有效地址\n");
        return false;
    }

    // 备份头结点
    LinkList_t *temp1 = head;

    // 用循环备份第k个结点
    LinkList_t *temp2 = head;
    for (int i = k - 1; i > 0; i--)
    {
        temp2 = temp2->next;
    }

    // 遍历链表,找到第k个结点
    while (temp1->next)
    {
        temp1 = temp1->next;
        temp2 = temp2->next;
    }

    // 输出第k个结点中数据域的值
    printf("%d\n", temp2->data);

    return true;
}
posted @   Dazz_24  阅读(4)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示