我以这种方式实现了这个功能:
typedef node* List;
void DeleteFromPos(List &l, unsigned int p) {
List lAux = l;
unsigned int count = 1;
while (lAux) {
if (p == 1) {
while (l) {
List del = lAux;
lAux = lAux->next;
delete del;
del = NULL;
}
lAux = NULL;
} else if (count < p-1) {
lAux = lAux->next;
count++;
} else {
List del = lAux->next;
if (del) {
lAux->next = del->next;
delete del;
del = NULL;
} else
lAux = NULL;
}
}
}
问题是当 p==1 时,在这种特殊情况下,所有元素都被删除,但看起来 l 指针最后仍然存在。我需要一些关于这个的建议。
编辑:有一些建议, p ==1 案例有他自己的循环,它很丑但它有效。