思路:
比较两个链表的数据,小的存入合并数组,当其中一个链表的数据都存完时,看看另一个链表存没存完,若没存完,直接按顺序存入合并数组,然后将两个链表的头结点指针指向NULL。
运行结果:
注意:函数体只需要提交题目中没有//细节不表的代码,这里只需要提交List Merge中的代码即可
整体代码如下:
#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 Read()
{
//接收链表中结点的个数
int N,data;
scanf("%d/n", &N);
//创建链表L的头指针
List L,p;
L = (List)malloc(sizeof(PtrToNode));