实现将数组中删除重复元素的函数,后面的空余元素变为-1
例如[1,2,3,1,1,5,2]变为[1,2,3,5,-1,-1,-1]。
int * const mydelete(int * const s1, int len)//len字符串长度
{
int i = 0, j = 0, k = 0;
int n = len;//记录数组长度
int count = 0;//记录多少个相同的数
for (i = 0; i < n - 1; ++i)//遍历每一个字符 i<n-1最后一个字符不需要再比较了
{
for (j = i + 1; j < n; ++j)//从i的后一个元素开始查找相同元素
{
if (s1[i] == s1[j])
{
++count;
for (k = j; k < n - 1; ++k)//相同的元素后面的数左移把相同的数覆盖掉
{
s1[k] = s1[k + 1];
}
--n;//数组长度减一
--j;//如果j不减一左移后i的下一位就查不到
}
}
}
for (i = (len - count); i < len; ++i)//后面的空位补-1
{
s1[i] = -1;
}
return s1;
}
主函数
int s1[] = { 1, 2, 3, 1, 1, 5, 2 };
int len = sizeof(s1) / sizeof(s1[0]);
mydelete(s1, len);
for (int i = 0; i < len; ++i)
{
printf("%4d", s1[i]);
}
return 0;
运行结果