一道二级的题目
#include<iostream>using namespace std;
class SortedList{ //有序数据表类
int len;
double *d;
public:
SortedList(int len, double data[]=NULL);
~SortedList(){ delete []d; }
int length()const{ return len; } //有序数据表长度(即元素的个数)
double getElement(int i)const{ return d[i]; }
void mergeFrom(const SortedList& list); //将 list 合并到当前有序数据表中
void show()const; //显示有序数据表
};
void writeToFile(char *, const SortedList&);
SortedList::SortedList(int len, double data[]):len(len){
d=new double[len];
for(int k=0; k<len; k++)
d[k]=(data==NULL ? 0.0 : data[k]);
for(int i=0; i<len-1; i++){
int m=i;
for(int j=i; j<len; j++)
if(d[j]<d[m]) m=j;
if(m>i){
double t=d[m];
d[m]=d[i];
d[i]=t;
}
}
}
void SortedList::mergeFrom(const SortedList& list){ //将 list 合并到当前有序数据表中
//********333********
//********666********
}
void SortedList::show()const{ //显示有序数据表
for(int i=0; i<len-1; i++) cout<<d[i]<<", ";
cout<<d[len-1]<<endl;
}
int main(){
double s1[]={5,8,1,2,10,4,7};
double s2[]={6,3,11,9,12};
SortedList list1(7,s1),list2(5,s2);
cout<<"合并前:"<<endl;
list1.show();
list2.show();
list1.mergeFrom(list2);
cout<<endl<<"合并后:"<<endl;
list1.show();
list2.show();
writeToFile("..\\", list1);
return 0;
}
问题:
请在//********333********
//********666********
里填写语句使得输出结果为
合并前:
1,2,4,5,7,8,10
3,6,9,11,12
合并后:1,2,3,4,5,6,7,8,9,10,11,12
3,6,9,11,12
这是我编的,可是不知道那里有错。
int i=0;
int j=0;
for(;i<=len-1;i++)
if(list.getElement(j)<d[i])
{for(int m=len-1;m>=i;m--)
d[m+1]=d[m];
d[i]=list.getElement(j);
j++;
len++;}
for(;j<=list.len-1;j++)
{d[len]=list.getElement(j);
len++;}
请高手指教,如果可能给出个更好的也感激不尽!