1.题目:从有序(升序)顺序表中删除所有其值重复的元素,使表中所有元素的值均不同
思路:
1. 本题依旧采⽤双指针法,定义两个指针,⼀个指向当前元素,⼀个指向下⼀个元素。
2. 遍历顺序表,⽐较两个指针所指元素的值。
3. 如果当前元素的值等于下⼀个元素的值,则将下⼀个元素删除,如果不相等则将两指针同步移动到
下⼀个位置。
4. 重复步骤2、3,直到遍历完这个链表。
typedef struct{
ElemType *data;
int MaxSize;
int length;
}SeqList;
bool Delete_Same(SeqList &L)
{
if(L.length == 0)
return false;
//i存储第一个不相同的元素,j为工作指针
int i,j;
for(i = 0,j = 1;j < L.length;j++)
if(L.data[i]!=L.data[j]) //查找下一个与上个元素值不同的元素
L.data[++i] = L.data[j]; //找到后,将元素前移
//注意是先 i+1,再L.data[i]=L.data[j];
L.length = i+1;
return true;
}