连接两个链表,出现第一个链表末尾指针指向另一个链表的头节点出现末尾指针地址无效访问。
代码如下
#include <stdio.h>
#include <stdlib.h>
typedef struct _node{
int number;
int score;
struct _node *next;
}Node;
Node* create(int n){
Node *head=(Node*)malloc(sizeof(Node));
head->next=NULL;
scanf("%d %d",&head->number,&head->score);
Node *p=head;
while(n-1){
Node *newnode=(Node*)malloc(sizeof(Node));
newnode->next=NULL;
scanf("%d %d",&newnode->number,&newnode->score);
p->next=newnode;
p=newnode;
n--;
}
return head;
}
Node* Link(Node *dst,Node *src){
Node *p=dst;
while(p){
p=p->next;
}
p->next=src;
return dst;
}
int main(){
int n,m;
scanf("%d %d",&n,&m);
Node* head_1=create(n);
Node* head_2=create(m);
Link(head_1,head_2);
Node *p=head_1;
while(p){
printf("%d %d",p->number,p->score);
if(p){
printf("\n");
}
p=p->next;
}
return 0;
}
运行结果如下
Node* Link(Node *dst,Node *src){
Node *p=dst;
if(p==0) return dst;
while( p->next){ //while中用p->next,而不是p,如果用p,那么在结束循环时p=NULL,此时用p->next就会崩溃
p=p->next;
}
p->next=src;
return dst;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: