|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- int* remove_repetitions(int* A,int n)
- {
- int i,j,k,del;
- for(i=0;i<n;i++)
- {
- del=A[i];
- for(j=i+1;j<n;j++)
- if(A[j]==del)
- {
- for(k=j+1;k<n;k++)
- {
- A[k-1]=A[k];
- }
- n--;
- j--;
- }
- }
- return n;
- }
- void main()
- {
- int A[10]={3,3,4,5,6,7,8,99,99,10};
- int i;
- remove_repetitions(A, 10);
- for (i=0;i<10;i++)
- {
- printf("%d ",A[i]);
- }
- }
复制代码
结果:3 4 5 6 7 8 99 10 10 10
为什么还会在最后有三个10呀,不是改变了长度吗?
- #include <stdio.h>
- #define N 10
- int remove_repetitions(int arr[], int n)
- {
- int i, j, k, del;
- for(i = 0; i < n-1; i++)
- {
- del = arr[i];
- for(j = i+1; j < n; j++)
- {
- if(arr[j] == del)
- {
- for(k = j+1; k < n; k++) //用 swap 放到最后一个会比较好
- arr[k-1] = arr[k];
- n--;
- j--;
- }
- }
- }
- return n;
- }
- int main()
- {
- int A[N] = {3, 3, 4, 5, 6, 7, 8, 99, 99, 10};
- int i;
- int L = remove_repetitions(A, N); //要赋值
- for(i = 0; i < L; i++) //长度要更新
- {
- printf("%d ", A[i]);
- }
- return 0;
- }
复制代码
|
|