用链表存一组数,程序挂了,求助
程序代码:#include<stdio.h>
#include<stdlib.h>
#define ARRAY1_LENGTH 10
#define ARRAY2_LENGTH 8
typedef struct data{
int number;
struct data *next;
}*Pnumber,numbdata;
Pnumber p,pTop,pTemp;
void List_Init(Pnumber p){
p=(Pnumber)malloc(sizeof(numbdata));
if(!p){
printf("Error");
}
}
void Select(int a[],int* b,int i){
*b=a[i];
}
int Compare(int a1,int a2){
if(a1<a2){
return 1;
}
else{
return 0;
}
}
void Insert(int *p,int b){
*p=b;
}
int main(){
int a[ARRAY1_LENGTH],b[ARRAY2_LENGTH];
int i,j,k,elem1,elem2,d;
printf("请向数组a输入10个非递减数字:\n");
for(i=0;i<ARRAY1_LENGTH;i++){
scanf("%d",&a[i]);
}
printf("请向数组b输入8个非递减数字:\n");
for(i=0;i<ARRAY2_LENGTH;i++){
scanf("%d",&b[i]);
}
i=0,j=0,k=0;
List_Init(p);
pTemp=p;
pTop=p;
while(i<ARRAY1_LENGTH-1&&j<ARRAY2_LENGTH-1){
Select(a,&elem1,i);
Select(b,&elem2,j);
d=Compare(elem1,elem2);
if(d){
Insert(&pTop->number,elem1);
List_Init(p);
p->next=p;
pTop=pTop->next;
i++;
}
else{
Insert(&pTop->number,elem2);
List_Init(p);
p->next=p;
pTop=pTop->next;
j++;
}
}
while(i<ARRAY1_LENGTH){
Select(a,&elem1,i);
Insert(&pTop->number,elem1);
List_Init(p);
p->next=p;
pTop=pTop->next;
i++;
}
while(j<ARRAY2_LENGTH){
Select(b,&elem2,j);
Insert(&pTop->number,elem2);
List_Init(p);
p->next=p;
pTop=pTop->next;
j++;
}
pTop=pTemp;
for(i=0;i<ARRAY1_LENGTH+ARRAY2_LENGTH;i++){
printf("%d\t",pTop->number);
pTop=pTop->next;
}
return 0;
}
各位,可以跑起来,但是一跑就程序停止运行了。
各位看看是哪里出现了问题。

