我有一个从我的循环列表中删除所有给定值的函数。问题是,每次我尝试删除相邻的值时,程序都会崩溃。例如:list: 0,7,9,9,8,当我想要删除值9时,程序崩溃。
功能:
void removeAllValue(List2W& l, int x){
if(isEmpty(l))
return;
Element *temp = l.head, *del;
int i;
if ( l.head->value == x ){
temp = temp->next;
deleteHead(l, i);
}
do {
if ( temp->value == x ){
if ( l.tail == temp ) {
temp = temp->next;
deleteTail(l, i);
return;
}
del = temp;
temp = temp->next;
del->next->prev = del->prev;
del->prev->next = del->next;
delete del;
} else {
temp = temp->next;
}
} while ( temp->prev != l.tail);
}完整的剩余代码:https://pastebin.com/57SeC0uK
发布于 2017-03-29 04:03:47
使用破折号表示空、字段的小写字母和元素指针的大写字母,我们构建一个列表,其中的代码通过pastebin显示:
h:-,t:-
insertHead(1)
h:A,t:A with A:p:-,1,n:-
insertHead(2)
h:B,t:A with A:p:B,1,n:- and B:p:A,2,n:A
这里有一个对称问题。为什么A.n仍然为空?例如,在前向迭代中,它可能很快就会崩溃。你对连续值的关注是有误导性的。
https://stackoverflow.com/questions/43076424
复制相似问题