已知一顺序表A,其元素值非递减有序,编写一个函数删除顺序表中多余的值相同的元素

如题所述

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#define MAXN 10000000using namespace std ;int a[MAXN] , n , nsize , tmp[MAXN] ;int cmp( const void * _a , const void * _b )
{
int *a = ( int* )_a ;
int *b = ( int* )_b ;
return *a - *b ;
}void distinct()
{
nsize = 0 ;
for( int i = 0 ; i < n ; ++i )
{
if( a[i] != a[i+1] )
{
tmp[nsize++] = a[i] ;
}
}
memcpy( a , tmp , sizeof( int )*nsize ) ;
}int main()
{
cout << "表中元素个数为:(不超过10000000)" << endl ;
cin >> n ;
for( int i = 0 ; i < n ; ++i )
{
cin >> a[i] ;
}
//非递减排序
qsort( a , n , sizeof( int ) , cmp ) ;
//删除相同元素
distinct() ;
//输出去重后的表,10个一行
int cnt = 0 ;
for( int i = 0 ; i < nsize ; ++i )
{
if( cnt == 10 )
cout << endl ;
cout << a[i] << " ";
}
return 0 ;
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答