c语言顺序表删除重复元素
时间: 2023-05-28 22:05:19 浏览: 140
删除排序链表中的重复元素
以下是一种基于双重循环的顺序表删除重复元素的C语言代码:
```
#include <stdio.h>
#define MAX_SIZE 100 // 定义顺序表的最大长度
typedef struct {
int data[MAX_SIZE];
int length;
} SeqList;
void deleteDuplicate(SeqList *list) {
int i, j, k;
for (i = 0; i < list->length - 1; i++) {
for (j = i + 1; j < list->length;) {
if (list->data[j] == list->data[i]) {
for (k = j; k < list->length - 1; k++) {
list->data[k] = list->data[k + 1];
}
list->length--;
} else {
j++;
}
}
}
}
int main() {
SeqList list = {{1, 2, 3, 2, 4, 5, 1}, 7};
printf("Original list: ");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
deleteDuplicate(&list);
printf("\nList after deleting duplicates: ");
for (int i = 0; i < list.length; i++) {
printf("%d ", list.data[i]);
}
return 0;
}
```
在上面的代码中,我们定义了一个SeqList结构体,包括一个整型数组data和一个整型变量length,分别表示顺序表的数据和长度。deleteDuplicate函数用于删除顺序表中的重复元素,具体实现如下:
1. 使用双重循环,外层循环i从0到length-2,内层循环j从i+1到length-1。
2. 如果发现data[j]等于data[i],则说明data[j]是一个重复元素,需要将其删除。我们使用一个for循环将data[j]后面的所有元素依次向前移动一位,并将顺序表的长度length减1。
3. 如果data[j]不等于data[i],则继续向后搜索。
4. 最终顺序表中的重复元素都被删除了。
在main函数中,我们创建一个包含重复元素的顺序表,并调用deleteDuplicate函数将重复元素删除。最后输出删除后的顺序表。
阅读全文