数据结构笔试题2

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

/*************************************************
 *
 *   func name     :Find
 *   func function :查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回 1:否则,只返回 0。
 *   func parameter:
 *                  @head:链表头结点的地址
 *                  @k   :要查找的结点(倒数第k个)
 *
 *   return        :int
 *   note          :None
 *   func author   :momolyl@126.com
 *   date          :2024/04/22
 *   version       :V1.0
 **************************************************/
typedef int datatype;
typedef struct LkList
{
    datatype data;
    struct LkList *next;
} L;
int Find(L *head, int k)
{

    L *phead = head;
    int count = 0;
    while (phead->next) // 遍历链表统计结点的个数
        count++;
    if (k > count) // 判断查找的结点是否在合理范围内
        return 0;

    L *phead1 = head;
    L *phead2 = head;
    for (int i = 0; i < k; i++)
    {
        phead1 = phead1->next;
    }
    while (phead1->next)
    {
        phead1 = phead1->next;
        phead2 = phead2->next;
    }
    printf("the data of %dTH node from bottom is %d", k, phead2->next->data);
    return 1;
}
posted @   铃是铃铛的铃  阅读(22)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示