#include <stdio.h>
#include <stdlib.h>
typedef int ElementType;
typedef struct Node* PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
List Read(); /* 细节在此不表 */
void Print(List L); /* 细节在此不表;空链表将输出NULL */
List Merge(List L1, List L2);
int main()
{
List L1, L2, L;
L1 = Read();
L2 = Read();
L = Merge(L1, L2);
Print(L);
Print(L1);
Print(L2);
return 0;
}
/* 你的代码将被嵌在这里 */
List Merge(List L1, List L2) {
//注意:头结点不储存数据
//声明一个头结点,用于储存归并后的链表
List L;
L = (List)malloc(sizeof(struct Node));
L->Next = NULL;
//再声明一个头结点,用于储存归并链表的头结点,防止由于归并链表前进,最后找不到头结点
List L0 = L;
//L1与L2的非头结点储存,这样声明可以提前保存两个被归并链表的头结点,便于最后赋值NULL
List Lone, Ltwo;
//注意头结点不储存数据,故使用L->next进行数据储存
Lone = L1->Next;
Ltwo = L2->Next;
//已声明L->next为NULL
//L0->next为NULL,故会报错 (因为此时L0=NULL,会出现段错误,这是一次提交的问题)
/*L0 = L0->Next;
03-21
586

10-01
377
