typedef int ElementType;
typedef struct Node *PtrToNode;
struct Node {
ElementType Data;
PtrToNode Next;
};
typedef PtrToNode List;
void Attach(List& L, int n)//将节点连接到归并链表的头部
{
List Temp = (List)malloc(sizeof(struct Node));
Temp->Data = n;
Temp->Next = L;
L = Temp;
}
List Merge(List A, List B)//归并链表
{
List Head = (List)malloc(sizeof(struct Node));
Head->Next = NULL;
while (A&&B)
{
if (A->Data <= B->Data)
{
Attach(Head, A->Data);
A = A->Next;
}
else
{
Attach(Head, B->Data);
B = B->Next;
}
}
for (; A; A = A->Next)
Attach(Head, A->Data);
for (; B; B = B->Next)
Attach(Head, B->Data);
List L = Head;
while (L->Next->Next)//删除归并链表最后的空节点
L = L->Next;
L->Next = NULL;
return Head;
}
将两递增有序链表归并成按元素递减排列的有序链表
最新推荐文章于 2023-12-10 15:53:19 发布