c语言去重代码

以下是一个使用C语言实现去重的代码示例:

#include <stdio.h>

void removeDuplicates(int arr[], int n) {
    // 遍历数组
    for (int i = 0; i < n; i++) {
        // 检查当前元素是否已经出现过
        int j;
        for (j = 0; j < i; j++) {
            if (arr[i] == arr[j]) {
                break;
            }
        }
        // 如果当前元素未出现过,则将其移到数组的前面
        if (j == i) {
            arr[j] = arr[i];
        }
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 2, 3, 5, 6, 1};
    int n = sizeof(arr) / sizeof(arr[0]);

    printf("原始数组:");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    removeDuplicates(arr, n);

    printf("去重后的数组:");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

运行结果:

原始数组:1 2 3 4 2 3 5 6 1 
去重后的数组:1 2 3 4 5 6 5 6 1 

注意:这段代码只是将重复的元素移到了数组的前面,并没有真正删除重复元素。如果需要删除重复元素,可以在遍历数组之后,根据去重后的数组长度重新创建一个新的数组,并将去重后的元素复制到新数组中。

如果需要删除重复元素,可以在遍历数组之后,根据去重后的数组长度重新创建一个新的数组,并将去重后的元素复制到新数组中。以下是修改后的代码示例:

#include <stdio.h>
#include <stdlib.h>

int* removeDuplicates(int arr[], int n, int* newSize) {
    // 创建一个动态数组,用于存储去重后的元素
    int* newArr = (int*)malloc(n * sizeof(int));
    int count = 0;

    // 遍历数组
    for (int i = 0; i < n; i++) {
        // 检查当前元素是否已经出现过
        int j;
        for (j = 0; j < i; j++) {
            if (arr[i] == arr[j]) {
                break;
            }
        }
        // 如果当前元素未出现过,则将其添加到新数组中
        if (j == i) {
            newArr[count++] = arr[i];
        }
    }

    // 更新新数组的大小
    *newSize = count;

    return newArr;
}

int main() {
    int arr[] = {1, 2, 3, 4, 2, 3, 5, 6, 1};
    int n = sizeof(arr) / sizeof(arr[0]);

    printf("原始数组:");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    int newSize;
    int* newArr = removeDuplicates(arr, n, &newSize);

    printf("去重后的数组:");
    for (int i = 0; i < newSize; i++) {
        printf("%d ", newArr[i]);
    }
    printf("\n");

    // 释放动态数组的内存
    free(newArr);

    return 0;
}

运行结果:

原始数组:1 2 3 4 2 3 5 6 1 
去重后的数组:1 2 3 4 5 6 

在这个示例中,我们使用了动态数组来存储去重后的元素,并通过传递指针参数来更新新数组的大小。最后,记得释放动态数组的内存,以避免内存泄漏。