仅考虑算法思路,不考虑具体实现,仿照有序表的解决思路借助chatgpt写出,如有错误之处,敬请指正。
代码:
bool delete_same(seqlist &L) {
if (L.length == 0) {
return false;
}
// 定义一个散列表,假设值范围在 0 到 999 之间
bool hashTable[1000] = {false};
int i = 0;
for (int j = 0; j < L.length; j++) {
if (!hashTable[L.data[j]]) { // 如果散列表中没有记录该值
hashTable[L.data[j]] = true; // 在散列表中记录该值
L.data[i++] = L.data[j]; // 保留该值
}
}
L.length = i; // 更新顺序表的长度
return true;
}
示例:
假设初始顺序表 L
为 {4, 3, 1, 2, 5, 3, 2, 1, 5, 6}
。
遍历和处理的步骤如下:
-
初始
i = 0
,遍历到j = 0
,元素4
没有在散列表中,保留4
:L.data[