【发布时间】:2013-08-21 18:02:41
【问题描述】:
我已完成插入,在循环链表中搜索,但要删除我收到编译器错误...
以下是我的节点结构。
struct node
{
int p_data;
struct node* p_next;
node(node* head, int data)
{
p_next = head;
p_data = data;
}
explicit node(int data)
{
p_next = nullptr;
p_data = data;
}
};
node* remove_circular(node* head, node* target)
{
if (head == target->p_next)
{
delete head;
return nullptr;
}
auto next_pointer = target->p_next;
target->p_data = next_pointer->p_data;
target->p_next = next_pointer->p_next;
delete target->p_next;
return target;
}
在主函数中我调用
head = remove_circular(head, head);
head = remove_circular(head, temp);
这是删除 head 元素和 temp 指向的另一个元素。 但是我遇到了错误
有人知道从循环列表中删除一个元素吗?
我将其更改为删除目标-> p_next; 但现在它会删除列表中的所有内容。 有什么想法???
【问题讨论】:
-
错误信息是什么?
-
看起来
remove_circular()中的delete p_next;行可能无法编译。 -
我同意 quamrana。在
remove_circular()的范围内没有p_next这样的东西。如果您认为编译器错误有问题,请等到您尝试运行 this。 -
错误是 clang llvm 1.0 错误退出代码 254。我用谷歌搜索了它,这是我的“CODE”产生的一种错误,我确信错误是由 remove_circular 函数引起的。隐藏该功能,错误就消失了。
-
这可能是由于 quamrana 所说的。在
remove_circular()范围内没有名为p_next的变量
标签: c++ pointers linked-list circular-list