33,311
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
# define OK 1
# define ERROR 0
/* 定义ElemType为int或别的自定义类型 */
typedef int ElemType;
/* 链式存储类型 */
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
/* 单链表的建立(头插法)*/
void CreateList_L(LinkList &L,int n) //CreateList_L() function
{ //To Creatre a LinkList L with HeadNode
int i;
LNode *p;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
printf("Please input the data for LinkList Nodes: \n");
for(i=n;i>0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data); //Reverse order inputing for Creating a LinkList
p->next=L->next;
L->next=p;
}//end of for
if(n) printf("Success to Create a LinkList !\n");
else printf("A NULL LinkList have been created !\n");
}//end of CreateList() function
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc)
{
LinkList pa,pb,pc;
LNode *p, *q;
pa=La->next;pb=Lb->next;
pc=La;
Lc = (LinkList)malloc(sizeof(LNode));//为Lc创建头结点
Lc->next=NULL;
q = Lc;//q指向链表的末尾节点
while(pa&&pb)
{
p=(LinkList)malloc(sizeof(LNode));
p->next = NULL;
if(pa->data<=pb->data)
{
p->data = pa->data;
pa = pa->next;
//pc->next=pa;pc=pa;pa=pa->next;
}
else
{
p->data = pb->data;
pb = pb->next;
}
q->next = p;
q = p;
}
while(pa)//如果pa还有节点没有遍历到
{
p=(LinkList)malloc(sizeof(LNode));
p->next = NULL;
p->data = pa->data;
pa = pa->next;
q->next = p;
q = p;
}
while(pb)//如果pb还有节点没有遍历到
{
p=(LinkList)malloc(sizeof(LNode));
p->next = NULL;
p->data = pb->data;
pb = pb->next;
q->next = p;
q = p;
}
}
void main()
{
LinkList La,Lb,Lc,p;
int n;
printf("请输入La的长度n:");
scanf("%d",&n);
CreateList_L(La,n);
printf("输出La的内容:");
p=La->next;
while(p)
{
printf("%d->",p->data);
p=p->next;
}
printf("\n");
printf("请输入Lb的长度n:");
scanf("%d",&n);
CreateList_L(Lb,n);
printf("输出Lb的内容:");
p=Lb->next;
while(p)
{
printf("%d->",p->data);
p=p->next;
}
printf("\n");
MergeList_L(La,Lb,Lc);
printf("输出Lc的内容:");
p=Lc->next;
while(p)
{
printf("%d->",p->data);
p=p->next;
}
printf("\n");
}
void CreateList_L(LinkList &L,int n) //CreateList_L() function
{ //To Creatre a LinkList L with HeadNode
int i;
LNode *p,*a;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
a=L;
printf("Please input the data for LinkList Nodes: \n");
for(i=n;i>0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data); //Reverse order inputing for Creating a LinkList
a->next=p;a=p;
p->next=NULL;
}//end of for
if(n) printf("Success to Create a LinkList !\n");
else printf("A NULL LinkList have been created !\n");
}
#include<stdio.h>
#include<stdlib.h>
# define OK 1
# define ERROR 0
/* 定义ElemType为int或别的自定义类型 */
typedef int ElemType;
/* 链式存储类型 */
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
/* 单链表的建立(头插法)*/
void CreateList_L(LinkList L,int n) //CreateList_L() function
{ //To Creatre a LinkList L with HeadNode
int i;
LNode *p,*a;
a=L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
printf("Please input the data for LinkList Nodes: \n");
for(i=n;i>0;--i)
{
p=(LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data); //Reverse order inputing for Creating a LinkList
a->next=p;a=p;
a->next=NULL;
}//end of for
if(n) printf("Success to Create a LinkList !\n");
else printf("A NULL LinkList have been created !\n");
}
void MergeList_L(LinkList La,LinkList Lb,LinkList Lc)
{LinkList pa,pb;
LNode *p,*a,*c;
pa=La->next;pb=Lb->next;
Lc=(LinkList)malloc(sizeof(LNode));
Lc->next=c=NULL;
a=Lc;
while(pa&&pb)
{
if(pa->data<=pb->data)
{p=(LinkList)malloc(sizeof(LNode));
p->data=pa->data;
a->next=p;a=p;p->next=c;pa=pa->next;
}
else
{p=(LinkList)malloc(sizeof(LNode));
p->data=pb->data;
a->next=p;a=p;p->next=c;pb=pb->next;}}
while(pa)
{ p=(LinkList)malloc(sizeof(LNode));
p->data=pa->data;
a->next=p;a=p;p->next=c;pa=pa->next;
}
while(pb)
{ p=(LinkList)malloc(sizeof(LNode));
p->data=pb->data;
a->next=p;a=p;p->next=c;pb=pb->next; }
}
void main()
{
LinkList La,Lb,Lc,p;
int n;
La=Lb=Lc=NULL;
printf("请输入La的长度n:");
scanf("%d",&n);
CreateList_L(La,n);
printf("输出La的内容:");
p=La->next;
while(p)
{
printf("%d->",p->data);
p=p->next;
}
printf("\n");
printf("请输入Lb的长度n:");
scanf("%d",&n);
CreateList_L(Lb,n);
printf("输出Lb的内容:");
p=Lb->next;
while(p)
{
printf("%d->",p->data);
p=p->next;
}
printf("\n");
//MergeList_L(La,Lb,Lc);
printf("输出Lc的内容:");
p=Lc->next;
while(p)
{
printf("%d->",p->data);
p=p->next;
}
printf("\n");
}