C链表,为啥会出现地址无效访问?

连接两个链表,出现第一个链表末尾指针指向另一个链表的头节点出现末尾指针地址无效访问。

代码如下

#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;
} 


运行结果如下

img

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;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

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