刪除順序表中值重復的元素


題目描述

設計一個算法,刪除順序表中值重復的元素(值相同的元素僅保留第一個),使得表中所有元素的值均不相同。其中順序表的動態分配用C語言描述如下:

 

#define InitSize 100          //表長度的初始定義
typedef int DataType;         //定義表元素的數據類型
typedef struct {              //順序表的定義
	DataType *data;       //指示動態分配數組的指針
	int maxSize, n;       //數組中最大容量和當前個數
}SeqList;

 

輸入描述

有多組測試數據,在每組測試數據的第一行輸入順序表中元素的個數 n;如果n不為0,第二行輸入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<stdio.h>

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<n;i++)
		{
			scanf("%d",&a[i]);
			if (a[i]>=0)
			vis1[a[i]]=1;
			else
			vis2[-a[i]]=1;	
		}
		
		if (n==0)
		{
			printf("EMPTY\n");
			continue;
		}	
		for (i=0;i<n;i++)
		{
			if (a[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("\n");
	}
	return 0;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM