这个程序的输出为什么是乱码?

程序的目的是取交集
感觉应该是头文件函数里面变量的地址问题,但是我找不到问题
源文件:

#include"homework2.h"
#include<stdio.h>
main(){int n1,n2;
List Head1,Head2;

Head1=MakeEmpty();
Head2=MakeEmpty();
scanf("%d,%d",&n1,&n2);
Head1=CreateList(Head1,n1);
Head2=CreateList(Head2,n2);
//printf("%d",Head2->next->Data);
Check(Head1,Head2,n1,n2);

}

头文件:

#include<stdio.h>
#include<malloc.h>
typedef int ElementType;
struct Node
{ElementType Data;
struct Node *next;
};
typedef struct Node *node;
typedef node List;

List MakeEmpty(){
List ptrL;
ptrL = (List)malloc(sizeof(struct Node));
return ptrL;
}

List CreateList(List HeaderL,int n){ElementType i;
List L;
L=HeaderL->next;
L= (List)malloc(sizeof(struct Node));
for(i=0;i<n;i++){
L->next= (List)malloc(sizeof(struct Node));
scanf("%d,",&L->Data);
L->next=L;};
return HeaderL; }

void Check(List HeaderL1,List HeaderL2,ElementType n1,ElementType n2)
{ElementType i,j;
List L1,L2;
L1=HeaderL1->next;
L2=HeaderL2->next;
for(i=0;i<n1;i++){
for(j=0;j<n2;j++){
if((L1->Data)==(L2->Data)){printf("%d,",L2->Data);}
L2=L2->next;
}
L1=L1->next;
}

}

参考:
数据结构对单链表进行数据排序