题目:有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同
#include<stdio.h>
typedef int ElemType;
typedef struct {
ElemType *data;//指示动态分配数组的指针
int Maxsize,length;//数组的最大容量和当前个数
}SeqList;
bool Delete_Same(SeqList& L){
if(L.length==0)//判断是否有元素
return false;
int i,j;//i存储第一个不相同的元素,j为工作指针
for(i=0,j=1;j<L.length;j++)
if(L.data[i]!=L.data[j])//查找下一个与上一个元素值不同的元素
L.data[++i] = L.data[j];//找到后,将元素前移
/*
假定 L.data[i]是重复元素
当发现与其不相同的元素时,将该不相同的元素,插入到L.data[i]的后面 一位
当发现相同的元素时,继续向后判断 ,不操作
如此,不同的元素就会替换掉相同的元素
*/
L.length=i+1;
return true;
}
main(){
SeqList l;
//初始化
l.data=new ElemType[5];
l.length=5;
l.data[0]=1;
l.data[1]=3;
l.data[2]=3;
l.data[3]=7;
l.data[4]=5;
Delete_Same(l);
for(int i=0;i<l.length;i++)
{
printf("%d\n",l.data[i]);
}
}
该博客介绍了一个C语言实现的算法,用于删除有序顺序表中所有值重复的元素,保持表中所有元素的值唯一。通过遍历顺序表,找到第一个不重复的元素并将其后续的不同元素依次前移,从而达到删除重复的目的。最后展示了删除重复元素后的顺序表内容。


被折叠的 条评论
为什么被折叠?



