Chapter 2
从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。
#include<stdio.h>
#include<stdlib.h>
#define Max 100
struct SqList{
int a[Max] = {3, 3, 5, 5, 5, 8, 8, 18};
int length = 8;
};
// 有序表中删除重复元素
void delete_duplicate(SqList &L){
int i = 0;
for(int j = 1; j < L.length; j++){
// 前一个元素 与 当前元素 不相同
if(L.a[i] != L.a[j]){
L.a[++i] = L.a[j];
}
}
// 更新有序表长度
L.length = i + 1;
}
// 打印顺序表
void show(SqList s){
if(s.length == 0){
printf("线性表为空");
return;
}
for(int i = 0; i < s.length; i++){
printf("%d ", s.a[i]);
}
printf("\n");
}
int main(){
SqList L;
printf("删除前:");
show(L);
delete_duplicate(L);
printf("删除后:");
show(L);
return 0;
}