void DeleAny(List& L, int x) {
int i = 0;
while (i<L.length) {
if (L.data[i] == x) {
for (int j = i; j < L.length - 1; j++) {
L.data[j] = L.data[j + 1];
}
L.length--;
}
else {
i++;
}
}
}
不可以下:
void DeleAny(List& L, int x) {
for (int i = 0; i < L.length; i++) {
if (L.data[i] == x) {
for (int j = i; j < L.length - 1; j++) {
L.data[j] = L.data[j + 1];
}
L.length--;
}
}
}
因为判断相等后后面部分前移,前移过来当前值跳过判断,出现漏判。