/**
* 用顺序表实现 王道P18 T6
*
* ①算法思想:
* 设置两个变量i和k,k从下标0开始,i从下标1开始,k和i向后移动,k相当于无重复有序顺序表的末尾,
* 如果i位置的元素不等于k位置的元素,那么k先向后移动一位,然后i位置的元素在覆盖到k位置上,i向后移动一位,
* 如果i位置的元素等于k位置的元素,那么i向后移动,k不动,
* 这种方法虽然两个变量i和k看似是在两个数组中完成的,但实则是在一个数组中完成的。
*
* ②数据结构:
* typedef struct{
* int data[MaxSize];
* int length;
* }SqList;
*
* ③算法设计
*/
#include <stdio.h>
#define MaxSize 100
typedef struct{
int data[MaxSize];
int length;
}SqList;
void DeleteRe(SqList &L){
int k = 0;
for (int i = 1; i < L.length; i++) {
if(L.data[i] != L.data[k]){
L.data[++k] = L.data[i];//相当于k++;L.data[k] = L.data[i];
}
}
L.length = k+1;//为什么不是k?因为这题同T3有区别,是++k而不是k++,所以最后k没有多加一个1,所以自己要加上
}
王道书P18 T6(静态顺序表实现)
于 2022-07-01 15:10:53 首次发布