注意
提交时候只需要把Merge的函数提交即可
定义变量 记得及时初始化 尤其是在malloc时候 特别注意
#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
List Read(){
int T = 0, K = 0;
List Last = NULL;
List L = NULL;
scanf("%d", &T);
if(T == 0){
return NULL;
}
L = (List)malloc(sizeof(struct Node));
L -> Next = NULL;
Last = L;
for(int i = 0 ; i < T; ++i){
scanf("%d", &K);
List node = (List)malloc(sizeof (struct Node));
node -> Data = K;
node -> Next = NULL;
Last -> Next = node;
Last = node;
}
return L;
}
void Print(List L){
if(L -> Next == NULL){
puts("NULL");
return;
}
L = L -> Next;
while(L != NULL){
printf("%d ", L -> Data);
L = L -> Next;
}
printf("\n");
}
List Merge( List L1, List L2 ){
List p, LL1, LL2;
List Head = (List)malloc(sizeof(List));
Head -> Next = NULL;
p = Head;
LL1 = L1 -> Next;
LL2 = L2 -> Next;
while(LL1 != NULL && LL2 != NULL){
if(LL1 -> Data <= LL2 -> Data){
p -> Next = LL1;
LL1 = LL1 -> Next;
}else{
p -> Next = LL2;
LL2 = LL2 -> Next;
}
p = p -> Next;
}
p -> Next = LL1 ? LL1 : LL2;
L1 -> Next = NULL;
L2 -> Next = NULL;
return Head;
}
int main()
{
List L1, L2, L;
L1 = Read();
L2 = Read();
L = Merge(L1, L2);
Print(L);
Print(L1);
Print(L2);
return 0;
}