原理:天勤P29-P30
代码:
#include <stdio.h>
#include <stdlib.h>
#define maxSize 100
typedef struct LNode
{
int data;
struct LNode* next;
}LNode;
LNode* CreateListR(int a[], int n)
{
LNode* L = (LNode*)malloc(sizeof(LNode));
L->next = NULL;
LNode* r = L;
LNode* s;
int i;
for ( i = 0; i < n; i++)
{
s = (LNode*)malloc(sizeof(LNode));
s->data = a[i];
r->next = s;
r = r->next;
}
r->next = NULL;
return L;
}
LNode* Merge(LNode*A, LNode*B)
{
LNode* p = A->next;
LNode* q = B->next;
LNode* r;
LNode* C = A;
C->next = NULL;
free(B);
r = C;
while(p!=NULL && q!=NULL)
if (p->data <= q->data)
{
r->next = p;
p = p->next;
r = r->next;
}
else
{
r->next = q;
q = q->next;
r = r->next;
}
r->next = NULL;
if (p != NULL)
r->next = p;
if (q != NULL)
r->next = q;
return C;
}
int main()
{
int a[maxSize] = { 1,2,7,9 };
int b[maxSize] = { 3,4,6,9,10 };
LNode* A,*B,*C;
A = CreateListR(a, 4);
B = CreateListR(b, 5);
C = Merge(A, B);
return 0;
}