#include <iostream>
#include <cstdlib>
using namespace std;
typedef int ElementType;
typedef struct Node *PtrNode;
struct Node
{
ElementType data;//存储结点数据
PtrNode next;//指向下一个结点的指针
};
typedef PtrNode List;//定义单链表类型
List read()
{
int N,n;
PtrNode headNode,tempNode,rearNode;
headNode = (PtrNode)malloc(sizeof(struct Node));
headNode->next = NULL;
rearNode = headNode;
cin >> N;
while (N--)
{
cin >> n;
tempNode = (PtrNode)malloc(sizeof(struct Node));
tempNode->data = n;
tempNode->next = NULL;
rearNode->next = tempNode;
rearNode = tempNode;
}
return headNode;
}
void print(List L)
{
if (!L->next)
{
cout << "NULL" << endl;
}
else
{
L = L->next;
while (L)
{
cout << L->data << endl;
L = L->next;
}
}
}
List merge(List L1, List L2)
{
List L, Li,P1,P2;
L =(List)malloc(sizeof(struct Node));
L->next = NULL;
Li = L;
P1 = L1->next;
P2 = L2->next;
while (P1&&P2)
{
if (P1->data < P2->data)
{
L->next = P1;
P1 = P1->next;
}
else
{
L->next = P2;
P2 = P2->next;
}
L = L->next;
}
if (P1)
{
L->next = P1;
}
if (P2)
{
L->next = P2;
}
L1->next = NULL;
L2->next= NULL;
return Li;
}
int main()
{
List L1, L2,L;
L1 = read();
L2 = read();
L = merge(L1, L2);
print(L);
print(L1);
print(L2);
return 0;
}
有序链表的合并
最新推荐文章于 2023-08-05 22:49:51 发布