竹叶风轻敲 2024-04-15 17:35 采纳率: 48.9%
浏览 20
已结题

没有报错链表结果没有输出

img


就是想写俩个链表,直接在main里面写了,然后再用mprint打印,但是结果没有输出来

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2024-04-16 11:09
    关注

    上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    问题:为什么链表的结果没有输出?

    回答:

    链表结果没有输出可能是以下原因:

    1. 没有给链表添加数据,或者数据添加错误。

    2. 打印链表数据时,可能出现了语法错误或逻辑错误。

    3. 可能没有给头节点进行初始化,导致出现异常。

    下面是解决方案:

    1. 确认链表有没有添加数据或数据添加是否正确,需要检查getnode函数是否正确创建节点并给节点赋值。

    2. 检查打印链表数据语句是否正确,可用调试工具,如GDB等定位语法或逻辑错误。

    3. 确认头节点是否初始化,如果没有初始化会导致程序出现异常,可在头节点赋值前,给其初始化为NULL。

    修改后的代码:

    #include<stdio.h> #include<stdlib.h>

    struct node{ int data; struct node*next; };

    struct node* getnode(int data){ struct nodetemp=(struct node)malloc(sizeof(struct node)); temp->next=NULL; temp->data=data; return temp; }

    void mprint(struct nodehead){ struct nodetemp=head; while(temp!=NULL){ printf("%d ",temp->data); temp=temp->next; } }

    int main(){ struct node*head1=NULL,head2=NULL; struct nodetemp1,*temp2; int i,j;

    // 给链表1添加数据(0~4)
    for(i=0;i<5;i++){
        temp1=getnode(i);
        if(head1==NULL){
            head1=temp1;
        }
        else{
            temp1->next=head1;
            head1=temp1;
        }
    }
    
    // 给链表2添加数据(3~8)
    for(j=3;j<6;j++){
        temp2=getnode(j);
        if(head2==NULL){
            head2=temp2;
        }
        else{
            temp2->next=head2;
            head2=temp2;
        }
    }
    
    // 打印链表数据
    mprint(head1);
    printf("\n");
    mprint(head2);
    
    return 0;
    

    }

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月22日
  • 创建了问题 4月15日