浙大版《資料結構(第2版)》題目集習題2.5 兩個有序連結串列序列的合併 (15分)
阿新 • • 發佈:2021-01-19
技術標籤:浙大版《資料結構(第2版)》題目集
遞迴版:
List digui(List L1,List L2)
{
if(L1==NULL) return L2;
if(L2==NULL) return L1;
if(L1->Data<L2->Data)
{
L1->Next=digui(L1->Next,L2);
return L1;
}
else
{
L2->Next=digui(L1,L2->Next);
return L2;
}
}
List Merge( List L1, List L2 )
{
List L=(List)malloc(sizeof(List));
L->Next=digui(L1->Next,L2->Next);
L1->Next=L2->Next=0;
return L;
}
非遞迴:
List Merge( List L1, List L2 )
{
List L=(List)malloc(sizeof(List));
List Lo=L;
List L3=L1->Next,L4=L2-> Next;
while(L3&&L4)
{
if(L3->Data<L4->Data)
{
Lo->Next=L3;
L3=L3->Next;
}
else
{
Lo->Next=L4;
L4=L4->Next;
}
Lo=Lo->Next;
}
if(!L3)
Lo->Next= L4;
if(!L4)
Lo->Next=L3;
L1->Next=0;
L2->Next=0;
return L;
}