顺序表题目描述及代码实现
题目描述: 从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。
算法思想: 本题为有序顺序表,值相同的元素也一定在连续的位置上,用类似于直接插入排序的思想,初始时将第一个元素视为非重复的有序表。之后依次判断后面的元素是否与前面非重复有序表的最后一个元素相同,若相同则继续向后判断,若不同则插入到前面的非重复有序表的最后,直至判断到表尾为止。
实现代码:
bool del_same(sqList &L)
{
int i,j;
if(L.length==0)
return false;
for (i = 0,j=1; j< L.length; j++)
{
if (L.data[i]!=L.data[j])
L.data[++i]=L.data[j];
}
L.length = i+1;
return true;
}
如果将本题改为无序表,并且要求时间复杂度为O(n)的话,那么可以使用散列表。