#include\"stdio.h\"
#include\"malloc.h\"
typedefintElemType;
typedefstructLNode
{
ElemTypedata;
structLNode*next;
}LNode,*linklist;
voidcreatelist(linklist
linklistp;
L=(linklist)malloc(sizeof(LNode));
linklistr;
r=L;
for(i=0;in;i)
{
p=(linklist)malloc(sizeof(LNode));
scanf(\"%d\",data);
r-next=p;r=p; }
printf(\"该单链表的元素为:\");
p=L-next;
for(i=0;in;i)
{printf(\"%d\",p-data);
p=p-next;}
printf(\"\\n\");
}
intListinsert_L(linklistintj;
p=L;j=0;
while(pi-1){p=p-next;j;}
if(!p||ji-1)return0;
s=(linklist)malloc(sizeof(LNode));
s-data=e;s-next=p-next;p-next=s;
p=L-next;
printf(\"插入后单链表的元素为:\");
for(j=0;jn1;j)
{printf(\"%d\",p-data);
p=p-next;}
printf(\"\\n\");
return1;
}
intListdelete_L(linklistintj;
p=L;j=0;
while(p-nexti-1){p=p-next;j;}
if(!(p-next)||ji-1)return0;
q=p-next;p-next=q-next;e=q-data;free(q);
p=L-next;
printf(\"删除后单链表的元素为:\");
for(j=0;jn;j)
{printf(\"%d\",p-data);
p=p-next;}
printf(\"\\n\");
return1;
}
voidMergeList_L(linklistintj;
Lc=(linklist)malloc(sizeof(LNode));
pa=La-next;pb=Lb-next;
Lc=pc=La;
while(padata=pb-data){pc-next=pa;pc=pa;pa=pa-next;}
else{pc-next=pb;pc=pb;pb=pb-next;}}
pc-next=pa?pa:pb;
free(Lb);
p=Lc-next;
for(j=0;jn1n2;j)
{printf(\"%d\",p-data);
p=p-next;}
printf(\"\\n\");
}
voidmain()
{
linklistLa,Lb,Lc;
intn1,n2,m,n,s,a;
printf(\"请输入单链表La的个数:\");
scanf(\"%d\",
printf(\"输入单链表La的元素:\");
createlist(La,n1);
printf(\"请输入单链表Lb的个数:\");
scanf(\"%d\",
printf(\"输入单链表Lb的元素:\");
createlist(Lb,n2);
printf(\"请输入向La中插入的元素及位置:\");
scanf(\"%d%d\",
Listinsert_L(La,n,m,n1);
printf(\"请输入向La中删除的元素的位置:\");
scanf(\"%d\",
Listdelete_L(La,s,a,n1);
printf(\"La与Lb合并后的链表Lc为:\\n\");
MergeList_L(La,Lb,Lc,n1,n2);
}
前面没问题,主要是合并的那个函数,我不晓得哪里出问题了,望高手指教挨·在线等··
|