用链表存一组数,程序挂了,求助
程序代码:
#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; }
各位,可以跑起来,但是一跑就程序停止运行了。
各位看看是哪里出现了问题。