#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define overflow 0
typedef struct node
{
int *elem;
int length;
} sqlist;
void createlist(sqlist *l,int len)
{
l->elem=(int *)malloc(sizeof(int)*len);
if(!l->elem) exit(overflow);
int i;
for(i=1; i<=len; i++)
scanf("%d",&l->elem[i]);
l->length=len;
}
void deletelist(sqlist *l)
{
int n=1,i,j;
// int count=l->length;
while(n<l->length)//写成count也对
{
for(i=n+1; i<=l->length; i++)//切忌 i<=l-length
{
if(l->elem[i]==l->elem[n])
{
for(j=i; j<l->length; j++)
l->elem[j]=l->elem[j+1];
l->length--;
i--;//注意!!! 如果忘记加上i--;则会遗漏连续相同元素的判别 如6 9 6 6 9 输出结果为 6 9 6
}
}
n++;
}
}
void print(sqlist *l)
{
int i;
for(i=1; i<l->length; i++)
printf("%d ",l->elem[i]);
printf("%d\n",l->elem[l->length]);
}
int main()
{
int t,m;
scanf("%d",&t);
sqlist l;
while(t--)
{
scanf("%d",&m);
createlist(&l,m);
deletelist(&l);
print(&l);
}
return 0;
}
顺序表应用1:多余元素删除之移位算法
最新推荐文章于 2021-03-15 11:13:47 发布