链表的归并要比数组的简单很多啊!
//链表归并
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int data;
struct Node * next;
}LinkList;
LinkList * Create()
{
LinkList *Head, *S, *R;
int data;
Head = (LinkList *)malloc(sizeof(LinkList));
Head->next = NULL; //建立空单链表
R = Head;
scanf("%d", data);
while(data != -1)
{
S = (LinkList *)malloc(sizeof(LinkList));
S->data = data;
S->next = R->next;
R->next = S;
R = S;
scanf("%d", data);
}
return Head;
}
void PrintLinkList(LinkList * p) //打印单链表
{
p = p->next;
while(p != NULL)
{
printf("%4d", p->data);
p = p->next;
}
}
LinkList * Merge(LinkList *A, LinkList *B) //将B链表的值放到A中
{
LinkList *p, *q, *prep, *preq;
p = A->next;
q = B->next;
prep = A;
preq = B;
while((p != NULL) && (q != NULL))
{
if(p->data < q->data)
{
prep = p;
p = p->next;
}
else //否则将B的值插到A中
{
preq = q;
q = q->next;
prep->next = preq;
preq->next = p;
prep = prep->next;
}
}
if(q != NULL)
prep->next = q;
return A;
}
int main()
{
//自己测试
}