绿眼踏雪 2023-10-14 16:48 采纳率: 33.3%
浏览 5

你好,链表查找数据位置

找到了数据2,使用return结束SinListFind函数,为什么还会打印 没有找到 这句话?请问哪里出现了问题?
求解求解~~

代码:

img

img

运行结果:

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-14 18:51
    关注

    【以下回答由 GPT 生成】

    问题出现在SinListFind函数中。根据问题描述,假设SinListFind函数的代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct node{
        int data;
        struct node* next;
    }Node;
    
    Node* SinListFind(Node* head, int target){
        Node* p = head;
        while(p){
            if(p->data == target){
                printf("找到了\n");
                return p;
            }
            p = p->next;
        }
        printf("没有找到\n");
        return NULL;
    }
    
    int main(){
        Node* head = (Node*)malloc(sizeof(Node));
        head->data = 1;
        head->next = (Node*)malloc(sizeof(Node));
        head->next->data = 2;
        head->next->next = NULL;
    
        SinListFind(head, 2);
    
        return 0;
    }
    

    解决方案: 在SinListFind函数中,使用了printf函数打印了"找到了"或"没有找到"的信息。当数据2被找到时,会执行printf("找到了\n"),然后通过return语句结束了函数的执行,并返回了找到的节点p。

    但是,由于函数的调用是在main函数中进行的,所以在return之后,会继续执行main函数中的剩余代码,包括printf("没有找到\n")语句。

    因此,虽然已经找到了数据2并返回,但是在main函数中还会执行printf("没有找到\n")语句,导致"没有找到"这句话被打印出来。

    如果不希望打印"没有找到"这句话,可以将printf("没有找到\n")语句移动到return语句之前,或者在return语句后面加入条件判断,只有当返回的指针为空时才打印"没有找到"。

    修改后的代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct node{
        int data;
        struct node* next;
    }Node;
    
    Node* SinListFind(Node* head, int target){
        Node* p = head;
        while(p){
            if(p->data == target){
                printf("找到了\n");
                return p;
            }
            p = p->next;
        }
        return NULL;
    }
    
    int main(){
        Node* head = (Node*)malloc(sizeof(Node));
        head->data = 1;
        head->next = (Node*)malloc(sizeof(Node));
        head->next->data = 2;
        head->next->next = NULL;
    
        Node* result = SinListFind(head, 2);
        if(result == NULL){
            printf("没有找到\n");
        }
    
        return 0;
    }
    

    这样修改之后,只有当找到数据2时,才会打印"找到了",否则打印"没有找到"。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月14日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表