问题描述
struct someEvent
{
int shouldRemove;
struct someEvent *prev;
struct someEvent *next;
} * someEvent;
struct someEvent *someEventQueue = NULL;
struct someEvent **curr = &someEventQueue;
if ((*curr) == NULL)
{
someEventQueue = &someEvent[0];
someEventQueue->next = NULL;
someEventQueue->prev = NULL;
}
else
{
while ((*curr)->next != NULL)
{
curr = &(*curr)->next;
}
struct someEvent *tmp = (struct someEvent *)malloc(sizeof(struct someEvent));
tmp = &someEvent[0];
tmp->next = NULL;
(*curr)->next = tmp;
tmp->prev = (*curr);
}
这部分是将节点插入双链表。
struct someEvent **curr5 = &someEventQueue;
if ((*curr5) != NULL)
{
while ((*curr5) != NULL)
{
if ((*curr5)->shouldRemove == 1)
{
if ((*curr5)->prev == NULL && (*curr5)->next == NULL)
{
(*curr5) = NULL;
}
else if ((*curr5)->prev != NULL)
{
(*curr5)->prev->next = (*curr5)->next;
if ((*curr5)->next != NULL)
{
(*curr5)->next->prev = (*curr5)->prev;
}
}
else
{
(*curr5) = (*curr5)->next;
if ((*curr5) != NULL)
{
(*curr5)->prev = NULL;
}
}
}
curr5 = &(*curr5)->next;
}
}
此部分正在删除节点。在执行此操作之前,我检查了所有必须删除的节点,并使用shouldRemove进行了标记。如果shouldRemove为1,则该节点将被删除。我认为没有问题,但是当我调试此代码时,它会在while ((*curr5) != NULL)
中返回分段错误(此代码是删除节点部分的第4行。)我确实尽力解决了此问题,但我认为可以解决这个问题..请给我一些建议。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)