c语言删除线性表重复元素
时间: 2023-09-25 19:16:37 浏览: 199
以下是一个简单的C语言程序,用于删除线性表中的重复元素:
```
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void printList(SqList L) {
int i;
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
void deleteDup(SqList *L) {
int i, j, k;
for (i = 0; i < L->length; i++) {
for (j = i + 1; j < L->length; j++) {
if (L->data[i] == L->data[j]) {
for (k = j; k < L->length - 1; k++) {
L->data[k] = L->data[k + 1];
}
L->length--;
j--;
}
}
}
}
int main() {
SqList L = {{1, 2, 3, 4, 5, 6, 7, 8, 9, 5, 3, 7}, 12};
printf("Original List: ");
printList(L);
deleteDup(&L);
printf("List after deleting duplicates: ");
printList(L);
return 0;
}
```
程序定义了一个结构体`SqList`,表示线性表。其中,`data`数组存储线性表中的元素,`length`表示线性表的长度。
`deleteDup`函数用于删除线性表中的重复元素。它使用两个for循环,遍历线性表中的每个元素,并与后面的元素进行比较。如果发现重复元素,就将后面的元素向前移动,并将线性表的长度减1。
在`main`函数中,创建了一个线性表,并调用`deleteDup`函数来删除重复元素。最后,打印出删除重复元素后的线性表。
阅读全文