c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

c语言删除数组中重复元素

夏志豪 2023-09-25编程经验
前言在C语言中,如果需要删除数组中的重复元素,我们可以使用一些遍历和比较的方法来实现。本文将介绍一种基于二重循环的解决方案,该方案适用于很大程度上保持原有顺序的情况

前言

在C语言中,如果需要删除数组中的重复元素,我们可以使用一些遍历和比较的方法来实现。本文将介绍一种基于二重循环的解决方案,该方案适用于很大程度上保持原有顺序的情况。

代码实现

#include 

#define MAX_SIZE 100

void remove_duplicates(int arr[], int size) {
  int i, j, k;

  // 遍历数组中的每个元素
  for (i = 0; i < size; i++) {
    // 遍历后面的元素
    for (j = i + 1; j < size; j++) {
      // 如果找到相同的元素
      if (arr[i] == arr[j]) {
        // 删除重复元素
        for (k = j; k < size - 1; k++) {
          arr[k] = arr[k + 1];
        }
        size--; // 更新数组大小
        j--;    // 更新内层循环索引以检查新元素
      }
    }
  }
}

int main() {
  int arr[MAX_SIZE];
  int size, i;

  printf("请输入数组的大小:");
  scanf("%d", &size);

  printf("请输入数组的元素:\n");
  for (i = 0; i < size; i++) {
    scanf("%d", &arr[i]);
  }

  remove_duplicates(arr, size);

  printf("删除重复元素后的数组为:\n");
  for (i = 0; i < size; i++) {
    printf("%d ", arr[i]);
  }

  return 0;
}

代码解释

上述代码中,我们首先定义了一个常量`MAX_SIZE`来表示数组的最大大小。

在`remove_duplicates`函数中,我们使用两重循环遍历数组中的每个元素。内层循环从外层循环当前元素的下一个元素开始遍历。

如果找到重复的元素,我们就通过移动数组元素的方式删除它。具体而言,我们将后面的元素依次前移一位,数组的大小也随之减小。需要注意,这里我们使用了`j--`来更新内层循环的索引,以便检查新元素。

最后,我们在`main`函数中读取用户输入的数组,调用`remove_duplicates`函数删除重复元素,并打印结果数组。

总结

通过上述代码,我们可以删除C语言数组中的重复元素。这种方法可以在很大程度上保持原有顺序。然而,由于需要遍历和移动数组元素,在处理大型数组时可能会导致性能下降。因此,在实际应用中,我们需要根据实际情况选择更高效的算法。

文章评论