小问题 有一个自然数列,比如1...1000.一个整数数组a[],其元素都是1到1000内的数,请问如何把数组a里出现过的数删除掉,把剩余的整数放到新数组b[]里?就象链表中删除一个元素,后面节点前移一位,可是不知道程序怎么写,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请问如何把数组a里出现过的数删除掉,把剩余的整数放到新数组b[]里?<=========什么意思,没有看懂?是不是把数组a里重复的数都删除啊?1、取出a数组的值,枚举,发现相同的让其后的a[i]=a[i+1],2、循环完把a数组最后一位置空3、重复循环4、把a里的数值给 b如果怕移动麻烦,就把a的数都赋给一个链表也行 bool bArray[1000] = {true} ; int count = a的大小 ; // a 应该已定义for(int i=0 ; i<count ; i++){ bArray[a[i]] = false ; // a[i] 一定要在 1....1000 以内,否则会访问违例}int b[1000] ; int index = 0 ; // 记录新数组 b[] 的大小for(i=0 ; i<1000 ; i++){ if( bArray[i] ) b[index++] = a[i] ; }// 得到新数组 b[] ,b的大小是index 这样做应该比较有效率吧,只需要两个循环就可以了。也不用复杂的数据结构。只是需要一个额外的 bool 型数组。 可以了不过bool bArray[1000] = {true} ; 这句初始化有问题啊 散分 csdn 的朋友们 2010 好运 如何将一个矩形划分成四个三角形区域? 如何在OnOpenDocument中使用CFileDialog 如何获取客户端的用户名和密码 请问通常所说的100M局域网指的是什么?是在每秒钟可以互通100M字节的数据吗? CCheckList的某一项打勾后触发的事件是什么? 与路由和网关有关系吗?为什么大客户量时数据发不出去? OMF是什么东西? 关于DLL 在InstallShield中怎么生成与设置序列号?急用! 读BMP图像的RGB值的问题,高手请进! 樹控件不能順利展開的問題。
1、取出a数组的值,枚举,发现相同的让其后的a[i]=a[i+1],
2、循环完把a数组最后一位置空
3、重复循环
4、把a里的数值给 b
如果怕移动麻烦,就把a的数都赋给一个链表也行
int count = a的大小 ; // a 应该已定义
for(int i=0 ; i<count ; i++)
{
bArray[a[i]] = false ; // a[i] 一定要在 1....1000 以内,否则会访问违例
}
int b[1000] ;
int index = 0 ; // 记录新数组 b[] 的大小
for(i=0 ; i<1000 ; i++)
{
if( bArray[i] )
b[index++] = a[i] ;
}
// 得到新数组 b[] ,b的大小是index
不过bool bArray[1000] = {true} ; 这句初始化有问题啊