帮忙看下错误在哪里?关于链表操作
#include"stdio.h"#include"stdlib.h"
#include "stdlib.h"
#define Len sizeof( struct Node)
#define ERROR 0
#define OK 1
typedef int ElemType;
typedef struct Node /*单链表的存储结构*/
{ElemType data ;
struct Node *next;
}Node,*LinkList;
LinkList *create_LinkList(int n)/*单链表输入函数*/
{int i;
LinkList *head,*s,*p;
head=(LinkList)malloc(Len);
head->next=NULL;
p=head ;
scanf("%d,",&p->data);
for(i=0;i<n;i++)
{s=(LinkList)malloc(Len);
scanf("%d,",&s->data);
p->next=s;
p=s;
}
s->next=NULL;
return (head);
}
int InsList(LinkList L,int i,ElemType e)/*单链表插入函数*/
{ Node * pre ,*s;
int k;
if(i<1) return(ERROR) ;
pre=L;k=0;
while(pre!=NULL&&k<i-1)
{pre=pre->next;
k++;
}
if(!pre)
{printf("插入位置不合理!");
return(ERROR);
}
s=(Node*)malloc(sizeof(Node));
s->data=e;
s->next=pre->next;
pre->next=s;
return(OK);
}
int DelList(LinkList L,int i,ElemType *e)/*单链表删除函数*/
{ Node *pre,*r;
int k;
pre=L;k=0;
while(pre->next!=NULL&&k<i-1)
{
pre=pre->next;
k=k+1;
}
if(!(pre->next))
{ printf("删除结点i位置不合理!");
return(ERROR);
}
r=pre->next;
pre->next=pre->next->next;
*e=r->data;
free(r);
return OK;
}
LinkList MergeLinkList(LinkList LA,LinkList LB)/*合并两个有序单链表函数*/
{Node *pa,*pb,*r;
LinkList LC;
pa=LA->next;
pb=LB->next;
LC=LA;
LC->next=NULL;
r=LC;
while(pa!=NULL&&pb!=NULL)
{if(pa->data<=pb->data)
{ r->next=pa;
r=pa;
pa=pa->next;}
else
{ r->next=pb;
r=pb;
pb=pb->next;}
}
if(pa)
r->next=pa;
else
r->next=pb;
free(LB);
return(LC);
}
void print_LinkList( LinkList *head)/*单链表输出函数*/
{LinkList *p;
p=head;
while(p!=NULL)
{
printf("%d",p->data);
p=p->next;/*让p指向下一个结点*/
}
if(p==NULL)
{
printf("^\n\n\n");
}
}
main()
{ int number1,number2,i,j,m,n; /*保存输入数字个数的变量*/
LinkList *head1,*head2,*head3;/*head是保存单链表的表头结点地址的指针*/
printf("请输入您要输入第一个的数组的个数:");
scanf("%d",&number1);
printf("请输入您要输入的数字(中间用逗号隔开):");
head1=create_LinkList(number1);
print_LinkList(head1);
printf("请输入您要插入的数和位置(中间用逗号隔开):");
scanf("%d,%d",&m,&i);
printf("插入后的新的数组:");
InsList(L,i,e);
print_LinkList(head1);
printf("请输入您要删除的位置:");
scanf("%d",&j);
printf("删除后的新的数组:");
DelList(L,i,&n);
printf("删除的数为 %d",e);
print_LinkList( head1);
printf("请输入您要输入第二个的数组的个数:");
scanf("%d",&number2);
printf("请输入您要输入的数字(中间用逗号隔开):");
head2=create_LinkList(number2);
print_LinkList( head2);
head3=MergeLinkList(head1,head2);
printf("第一个数组和第二个数组合并后新数组为:");
print_LinkList( head3);
}