各位谁能按照我下面的意图将我不会下的代码写上,谁能帮助,谢谢!
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int data;
struct LNode *next;
}Lnode,*LinkList;
LinkList CreateList(LinkList L,int value);
LinkList MergeList(LinkList La,LinkList Lb,LinkList Lc);
void Output(LinkList L);
int main(void)
{
LinkList La=NULL,Lb=NULL,Lc=NULL;
int i,n,value;
printf("Please input La length n:"); //创建链表La
scanf("%d",&n);
for(i=1;i<=n;i++) //n代表结点个数
{
scanf("%d",&value);
La=CreateList(La,value);
Output(La); //输出La
}
printf("Please input Lb length n:"); //创建链表Lb
scanf("%d",&n);
for(i=1;i<=n;i++) //n代表结点个数
{
scanf("%d",&value);
Lb=CreateList(Lb,value);
Output(Lb); //输出Lb
}
Lc=MergeList(La,Lb,Lc); //合并链表La,Lb
Output(Lc); //输出创建后的Lc表
return 0;
}
LinkList CreateList(LinkList L,int value) //创建链表函数
{
LinkList newPtr,previousPtr,currentPtr;
if((newPtr=(LinkList)malloc(sizeof(Lnode)))==NULL) //内存空间分配失败
{
exit(1);
}
newPtr->data=value;
newPtr->next=NULL;
previousPtr=NULL;
currentPtr=L;
while(currentPtr && currentPtr->data < value) //由小到大创建链表
{
previousPtr=currentPtr;
currentPtr=currentPtr->next;
}
if(!previousPtr) //当链表为空时
{
newPtr->next=L;
L=newPtr;
}
else //链表不为空时
{
previousPtr->next=newPtr;
newPtr->next=currentPtr;
}
return L;
}
LinkList MergeList(LinkList La,LinkList Lb,LinkList Lc) //合并La,Lb成链表Lc
{
LinkList ca,cb,cc;
if(La && !Lb ) //当Lb为空表时
Lc=La;
else if(Lb && !La) //当La为空表时
Lc=Lb;
else
{
//当La和Lb都不为空表的情况下,用元素比较的方法每次将小者插入Lc中
}
return Lc;
}
void Output(LinkList L) //输出链表
{
while(L)
{
printf("%d->",L->data);
L=L->next;
}
printf("NULL\n");
}
请好心人帮我把MergeList()中的else部分按照我的意图写上,谢谢!