c语言删除数组中重复的元素
时间: 2023-10-14 14:04:50 浏览: 480
以下是一个示例代码,可以删除数组中重复的元素。首先,使用两个嵌套循环来比较每一个元素,如果有相同的元素,则将后面的元素移动到前面并且数组长度减一,以此来删除重复元素。
```
#include <stdio.h>
int main()
{
int arr[] = {1, 2, 3, 4, 4, 5, 5, 6, 7, 7};
int n = sizeof(arr) / sizeof(arr[0]);
int i, j, k;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n;) {
if (arr[j] == arr[i]) {
for (k = j; k < n; k++) {
arr[k] = arr[k + 1];
}
n--;
} else {
j++;
}
}
}
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果:
```
1 2 3 4 5 6 7
```
相关问题
c语言用数组删除重复元素
可以使用双重循环来实现C语言中数组删除重复元素的功能。具体实现方法如下:
```
#include <stdio.h>
#define N 12
int main() {
int i, j, k, n = N;
int num[N] = {1, 1, 2, 7, 3, 2, 3, 4, 5, 8, 7, 7};
for (i = 0; i < n - 1; ++i) {
for (j = i + 1; j < n; ++j) {
if (num[i] == num[j]) {
for (k = j; k < n - 1; ++k) {
num[k] = num[k + 1];
}
--n;
--j;
}
}
}
for (i = 0; i < n - 1; ++i) {
printf("%d,", num[i]);
}
printf("%d", num[i]);
return 0;
}
```
该程序使用了三重循环,第一重循环用于遍历数组中的每一个元素,第二重循环用于比较当前元素与后面的元素是否相同,第三重循环用于将后面的元素前移一位。最后输出的数组即为删除重复元素后的结果。
c语言删除数组中的重复元素
在C语言中,删除数组中的重复元素可以采用几种方法,这里我会介绍一种简单直接的方式,即使用哈希表(如`std::unordered_set`或自定义结构体)。这里假设我们有一个整数数组。
```c
#include <stdio.h>
#include <stdlib.h>
// 自定义哈希表结构
typedef struct {
int value;
bool isDuplicate; // 标记是否已存在
} HashEntry;
void removeDuplicates(int* arr, int n) {
// 创建一个大小等于数组长度的哈希表
HashEntry* hashTable = malloc(n * sizeof(HashEntry));
for (int i = 0; i < n; i++) {
hashTable[i].value = arr[i];
hashTable[i].isDuplicate = false;
}
// 遍历数组,如果元素不在哈希表中,则添加到结果数组,并设置重复标记为false
int resultSize = 0;
for (int i = 0; i < n; i++) {
if (!hashTable[i].isDuplicate) {
arr[resultSize++] = arr[i]; // 将非重复元素复制到原数组位置
hashTable[i].isDuplicate = true;
}
}
// 结果数组可能比原数组小,所以需要截断
arr[resultSize] = 0;
// 清理哈希表
free(hashTable);
}
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
removeDuplicates(arr, n);
printf("Array without duplicates: ");
for (int i = 0; arr[i] != 0; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序首先创建一个哈希表来存储元素及其重复状态。然后遍历输入数组,将非重复的元素复制回原数组的位置,并更新哈希表。最后,清理不再需要的哈希表内存。