数据结构上机测试1:顺序表的应用
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
输入
第二行依次输入顺序表初始存放的n个元素值。
输出
第二行依次输出完成删除后的顺序表元素。
示例输入
12 5 2 5 3 3 4 2 5 7 5 4 3
示例输出
5 5 2 3 4 7
提示
用尽可能少的时间和辅助存储空间。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *elem; //空间基址
int length;//当前长度
int lsize; // 当前分配容量
}sqlist;
int main()
{
int n,i,j;
scanf("%d",&n);
sqlist L;
L.elem=(int *)malloc(n*sizeof(int ));//开辟空间
if(!L.elem) exit (-2);
L.length=0;
L.lsize=n;
for (i=0;i<n;i++){
scanf("%d",&L.elem[i]);
L.length+=1;
if(i>0){
for (j=0;j<i;j++){
if(L.elem[i]==L.elem[j]) {//判断刚输入的数字是否与以前输入的数字相等。
i=i-1; //相当于指针没有移动,下一个输入的数字会覆盖重复的数字
L.length=L.length-1;
L.lsize=L.lsize-1;
n=n-1; //i减去了1,n也要相应的减1。
}
}
}
}
if(L.length==L.lsize){ //此处if有判断结果正确与否的功能,当没有重复的数字时,二者会相等、
printf("%d\n",L.length);
for(i=0;i<L.lsize;i++){
printf("%d ",L.elem[i]);
}
}
}