题目:有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同
#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]);
}
}