有一个自然数列,比如1...1000.
一个整数数组a[],其元素都是1到1000内的数,
请问如何把数组a里出现过的数删除掉,把剩余的整数放到新数组b[]里?
就象链表中删除一个元素,后面节点前移一位,可是不知道程序怎么写,
谢谢

解决方案 »

  1.   

    请问如何把数组a里出现过的数删除掉,把剩余的整数放到新数组b[]里?<=========什么意思,没有看懂?是不是把数组a里重复的数都删除啊?
    1、取出a数组的值,枚举,发现相同的让其后的a[i]=a[i+1],
    2、循环完把a数组最后一位置空
    3、重复循环
    4、把a里的数值给 b
    如果怕移动麻烦,就把a的数都赋给一个链表也行
      

  2.   

    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
      

  3.   

    这样做应该比较有效率吧,只需要两个循环就可以了。也不用复杂的数据结构。只是需要一个额外的 bool 型数组。
      

  4.   

    可以了
    不过bool bArray[1000] = {true} ; 这句初始化有问题啊