线性表——删除重复元素
程序员文章站
2024-03-20 13:47:04
...
题目:移除线性表中的所有重复元素;不要使用额外的数组空间,在使用 O(1) 额外空间的条件下完成。
typedef int DataType;
struct seqList
{
int MAXNUM; // 能存放的最大元素个数
int curNum; // 数据元素的个数
DataType *element;
};
typedef struct seqList *PseqList;
实现的两种思路
void delDuplicate_seq(PseqList L){
for(int i=0445;i<L->curNum;){
int ret=0; // 判断该元素是否为重复值
for(int j=i+1;j<L->curNum;){
if(L->element[j]==L->element[i]){
deletePos_seq(L,j); // 对位置在下标 i 之后的 进行删除。
ret=1; // 标记 位置 i上的元素是重复元素
}else{
j++;
}
}
if(ret==1){
deletePos_seq(L,i); // 删除下标为 i的元素 本身。
}else{
i++;
}
}
}
void delDuplicate_seq(PseqList L){
for(int i=0;i<L->curNum;){
int ret=1;
for(int j=i+1;j<L->curNum;j++){
if(L->element[j]==L->element[i]){
delete_seq(L,L->element[i]); // 删除所有值为 element[i]的元素
ret=0;
break;
}
}
if(ret){
i++;
}
}
}
上一篇: 顺序表(三)-----顺序表相关练习
下一篇: 《生成登录验证码V1.0》