数据结构上机测试1:顺序表的应用
Time Limit: 1000 ms Memory Limit: 65536 KiB
Submit Statistic Discuss
Problem Description
在长度为n(n<1000)的顺序表中可能存在着一些值相同的“多余”数据元素(类型为整型),编写一个程序将“多余”的数据元素从顺序表中删除,使该表由一个“非纯表”(值相同的元素在表中可能有多个)变成一个“纯表”(值相同的元素在表中只能有一个)。
Input
第一行输入表的长度n; 第二行依次输入顺序表初始存放的n个元素值。
Output
第一行输出完成多余元素删除以后顺序表的元素个数; 第二行依次输出完成删除后的顺序表元素。
Sample Input
12
5 2 5 3 3 4 2 5 7 5 4 3
Sample Output
5
5 2 3 4 7
Hint
用尽可能少的时间和辅助存储空间。
Source
思路:
先建一个a数组存数据,然后遍历如果相同就n--。
代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int a[1001] ;
int n , i , j ;
int k ;
scanf("%d",&n) ;
for( i = 0 ; i< n ; i++)
{
scanf("%d",&a[i]) ;
}
//遍历过程
for( i = 0 ; i< n ; i++)
{
for(j = i+1 ;j<n ; j++ )
{
if(a[i]==a[j])
{
k = j ;
for(;k<n-1 ; k++)
{
a[k] =a[k+1] ;
}
n--;
j-- ;//回到上一个数,避免遍历不全
}
}
}
printf("%d\n",n) ;
for(i = 0 ; i< n ; i++)
{
if(i==0)
printf("%d",a[i]) ;
else printf(" %d",a[i]) ;
}
return 0 ;
}
/***************************************************
****************************************************/