順序テーブルの値が重複する要素を削除

1475 ワード

タイトルの説明
順序テーブルの値が重複する要素を削除するアルゴリズムを設計します(値が同じ要素は最初の要素のみを保持します).これにより、テーブル内のすべての要素の値が異なるようにします.順序テーブルの動的割り当ては以下のように説明されます.
 
#define InitSize 100          //        
typedef int DataType;         //          
typedef struct {              //      
	DataType *data;       //           
	int maxSize, n;       //            
}SeqList;

 
説明の入力
複数のテストデータがあり、各テストデータの最初の行に順序テーブルの要素の個数nを入力する.nが0でない場合は、2行目にn個の数を入力し、スペースで区切ります.
出力の説明
順表が空でない場合は、削除後の順序表の要素を出力します.
シーケンステーブルが空の場合、EMPTYを出力
入力サンプル
6
1 -2 3 -2 4 1
0
8
-1 5 7 9 5 3 -1 2

出力サンプル
1 -2 3 4
EMPTY
-1 5 7 9 3 2 

 
 
#include

int a[100000],vis1[100000+10]={0},vis2[100000+10];

int main()
{
	int n,m,j,k,i,T;
	while (~scanf("%d",&n))
	{
		for (i=0;i<100000+10;i++)
		{
			vis1[i] = 0;
			vis2[i] = 0;
		}
		
		for (i=0;i=0)
			vis1[a[i]]=1;
			else
			vis2[-a[i]]=1;	
		}
		
		if (n==0)
		{
			printf("EMPTY
"); continue; } for (i=0;i=0) { if (vis1[a[i]]==1) { printf("%d ",a[i]); vis1[a[i]] = 0; } } else { if (vis2[-a[i]]==1) { printf("%d ",a[i]); vis2[-a[i]] = 0; } } } printf("
"); } return 0; }

 
転載先:https://www.cnblogs.com/Romantic-Chopin/p/10253007.html