
就是想写俩个链表,直接在main里面写了,然后再用mprint打印,但是结果没有输出来
上午好☀️☀️☀️️
本答案参考ChatGPT-3.5
问题:为什么链表的结果没有输出?
回答:
链表结果没有输出可能是以下原因:
没有给链表添加数据,或者数据添加错误。
打印链表数据时,可能出现了语法错误或逻辑错误。
可能没有给头节点进行初始化,导致出现异常。
下面是解决方案:
确认链表有没有添加数据或数据添加是否正确,需要检查getnode函数是否正确创建节点并给节点赋值。
检查打印链表数据语句是否正确,可用调试工具,如GDB等定位语法或逻辑错误。
确认头节点是否初始化,如果没有初始化会导致程序出现异常,可在头节点赋值前,给其初始化为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;
}