順序テーブルの値が重複する要素を削除
1475 ワード
タイトルの説明
順序テーブルの値が重複する要素を削除するアルゴリズムを設計します(値が同じ要素は最初の要素のみを保持します).これにより、テーブル内のすべての要素の値が異なるようにします.順序テーブルの動的割り当ては以下のように説明されます.
説明の入力
複数のテストデータがあり、各テストデータの最初の行に順序テーブルの要素の個数nを入力する.nが0でない場合は、2行目にn個の数を入力し、スペースで区切ります.
出力の説明
順表が空でない場合は、削除後の順序表の要素を出力します.
シーケンステーブルが空の場合、EMPTYを出力
入力サンプル
出力サンプル
転載先:https://www.cnblogs.com/Romantic-Chopin/p/10253007.html
順序テーブルの値が重複する要素を削除するアルゴリズムを設計します(値が同じ要素は最初の要素のみを保持します).これにより、テーブル内のすべての要素の値が異なるようにします.順序テーブルの動的割り当ては以下のように説明されます.
#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