查詢連結串列中倒數第k(k為正整數)個位置上的結點,查詢成功輸出該結點的data值,並返回1,否則只返回0

Dazz_24發表於2024-04-22

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

相關文章