| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 362 人关注过本帖
标题:一道二级的题目
只看楼主 加入收藏
小编程员
Rank: 1
来 自:广州
等 级:新手上路
帖 子:14
专家分:0
注 册:2009-7-31
结帖率:75%
收藏
已结贴  问题点数:70 回复次数:1 
一道二级的题目
#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++;}
请高手指教,如果可能给出个更好的也感激不尽!

2009-08-28 14:01
xufen340
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:166
专家分:1351
注 册:2009-8-7
收藏
得分:70 
四步:
1.分配新内存。
int newlength=this->len+list.length();  
double* newptr=new double[newlength];
2.对新数组赋值
int i=0;
for(i=0;i<this->len;i++) newptr[i]=this->d[i];
for(;i<newlength;i++) newptr[i]=this->list1.getElement(i-len);
3.指针重新指向
delete[] d;
d=newptr;
4.排序
这里我就不写了,数据结构里排序有好多方法,随便都可以。
2009-08-28 16:02
快速回复:一道二级的题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025313 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved