这个链表函数有什么问题?
What's wrong with this linked list function?
上下文是L
链表中的一个。我假设L在开头不是0,并且每个链表都以一个节点结尾,该节点的下一个字段为NULL。
void g(node*, int, char);
void g(node* L, int k, char y) {
node* current = L;
if (current->info == y) k--;
while (current->next) {
if (current->next->info == y) {
if (k > 0) k--;
else {
node* very_next = current->next->next;
delete current->next;
current->next = very_next;
}
}
current = current->next;
}
}
我一直收到一个级别为while(current->next)
的BAD_ACCESS警告。怎么了?我正在访问一个正确的节点,因为测试(!current->next)
失败了。那怎么了?
我正在测试的链接列表是
node* n = new node('a',new node('b', new node('a', new node('c', new node('a', 0)))));
具有此结构:
struct node {
char info;
node* next;
node(char a = 0, nodo* b = 0) {
info = a;
next = b;
}
};
如果是current->next->next == very_next = NULL
,current是否也会被分配NULL
,从而使以后对current的访问(通过current->next
)无效(current = current->next = very_next
)?
您在循环中认为current->next->next指向下一个元素的假设可能是错误的,您应该首先检查这是否为真。
相关文章:
- 警告处理为错误这里有什么问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 违反const正确性:我应该现实地期待什么问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- 我的逻辑反转字符串中的元音有什么问题?
- 需要以下代码的帮助,下面的代码有什么问题
- 常量公共成员有什么问题?
- 以下代码中的函数模板有什么问题?
- 这个返回元素位置的基于循环的函数有什么问题?
- creat_list2功能有什么问题?
- 格式说明符C++有什么问题
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 从 argv[1] 转换为字符 * 字符串后有什么问题?
- 我的堆栈和库存清单程序的结构有什么问题?
- 此工厂功能有什么问题?
- 以下 C++ 代码有什么问题?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 它解决了什么问题,对于非真空初始化,生命周期在初始化之前就开始了