记录下考研过程中的复习C,C++
题目:链表L1,L2为两个有序升序的链表,编写程序使两个有序链表合并成一个升序表L3
//定义
typedef struct LNode{
int data;
struct LNode *next;
}*LinkNode,LNode;
//创建
LinkNode Create_LNode(){
LNode *L;
L = (LNode *)malloc(sizeof(LNode));
L->next=NULL;
int n,x;
LNode *p=L,*s;
printf("请输入链表长度\n");
scanf("%d",&n);
printf("请输入链表中的具体数值\n");
while(n--){
scanf("%d",&x);
s = (LNode *)malloc(sizeof(LNode));
s->data=x;
p->next=s;
p=s;
}
p->next=NULL;
return L;
}
//合并
LinkNode MyMerge(LinkNode L1,LinkNode L2){
LinkNode L3;
L3 = (LNode *)malloc(sizeof(LNode));
L3->next=NULL;
LNode *p=L1->next,*q=L2->next,*s=L3;
while(q&&p){
if(p->data<q->data){
s->next=p;
s=p;
p=p->next;
}
else{
s->next=q;
s=q;
q=q->next;
}
}
while(p){
s->next=p;
s=p;
p=p->next;
}
while(q){
s->next=q;
s=q;
q=q->next;
}
s->next=NULL;
return L3;
}
void Printf_LNode(LinkNode L){
LNode *p=L->next;
while(p){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void main(){
LNode *L1=NULL,*L2=NULL,*L3=NULL;
L1=Create_LNode();
L2=Create_LNode();
Printf_LNode(L1);
Printf_LNode(L2);
L3=MyMerge(L1,L2);
Printf_LNode(L3);
}