今天用c语言写了有序链表的合并。
#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 Merge( List L1, List L2 ) { List pa,pb,pc; pa=L1->Next; pb=L2->Next; List L=(List)malloc(sizeof(List)); pc=L; while(pa&&pb) { if(pa->Data>pb->Data) { pc->Next=pb; pb=pb->Next; } else{ pc->Next=pa; pa=pa->Next; } pc=pc->Next; } pc->Next=pa?pa:pb; L1->Next=NULL; L2->Next=NULL; return L; }