循环删除所有给定值
Cycled removing all given values
我有一个函数,假设从我的循环列表中删除所有给定的值。问题是每次我尝试删除彼此相邻的值时程序都会崩溃。例如: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
使用代表 NULL 的破折号、代表字段的小写字母和代表元素指针的大写字母,我们使用通过 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 保持空?它可能很快就会崩溃,例如在前向迭代中。您对连续值的关注具有误导性。
相关文章:
- 如何从使用 for 循环中的矢量大小的矢量中删除元素
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- 删除功能不适用于串行通信后多个循环中的多个实例
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- c++ 循环访问对象列表并删除对象
- 循环以从字符数组中删除过多的空格 (C++)
- C++循环链表删除,计数从下一个节点开始
- c++ 在循环中删除迭代器(映射的映射)
- 遍历 STL 映射(集/多集)的最佳方法,同时元素可能会在循环期间被删除并重新插入?
- 循环依赖:无法删除不完整的类型
- 如何在每次循环迭代期间生成向量,存储数据,然后删除该向量?
- 我写了一个函数来删除循环链接列表中的第 1 个节点,但输出显示无限次"55 44 33 22 11 99",那么我该如何解决呢?
- 删除循环链接列表中的项目
- 删除循环双向链表中的节点
- 基于条件语句删除循环中的矢量元素
- 删除循环内矢量的元素
- 删除循环中Vector的元素
- 删除循环列表中的节点时崩溃
- 删除循环链表中的节点
- 删除循环内存泄漏