題目描述:
将兩個有序順序表合并成一個新的有序順序表,并由函數傳回結果順序表
算法思想:
沒什麼可說的,歸并
核心代碼:
int InitSqList(SqList &L)
{
//按照嚴版資料結構,不是采用data[MaxSize]而是采用*elem就在此動态申請記憶體
L.length=0;
return 0;
}
SqLi
st merge_A_B(SqList &L1,SqList &L2)
{
//王道參考答案的做法是:
/*
if(L1.length+B.length>C.MaxSize)
return false;
我寫的程式中這句L.length++;就省略,在程式的最後補上L.length=k;
*/
SqList L;//或者在參數表中SqList &L;
InitSqList(L);
int i,j,k;
i=j=k=0;
while(i<L1.length&&j<L2.length)
{
if(L1.data[i]<L2.data[j])
{
L.length++;//感覺這句在考試中應該不出現,預設先賦給L足夠的記憶體空間
L.data[k++]=L1.data[i++];
}
else
{
L.length++;//感覺這句在考試中應該不出現,預設先賦給L足夠的記憶體空間
L.data[k++]=L2.data[j++];
}
}
while(i<L1.length)
{
L.length++;//感覺這句在考試中應該不出現,預設先賦給L足夠的記憶體空間
L.data[k++]=L1.data[i++];
}
while(j<L2.length)
{
L.length++;//感覺這句在考試中應該不出現,預設先賦給L足夠的記憶體空間
L.data[k++]=L2.data[j++];
}
return L;
}