将节点插入双列表时的Segfault

时间:2013-02-04 15:58:02

标签: c

void ins_after(struct node *node, struct node *new_node)
{
    new_node -> next = node -> next; 
    node -> next = new_node; 
    new_node -> next -> prev = new_node;
    new_node -> prev = node;
}

当我尝试将节点插入双列表时,上面的代码给出了段错误。知道为什么吗? = /

2 个答案:

答案 0 :(得分:2)

你必须NULL - 检查指针,考虑如果node位于列表的开头或结尾会发生什么,这通常是在重复追加建立列表时发生的。

“孤独”列表项通常会prevnext等于NULL

答案 1 :(得分:0)

列表包含

时的处理条件
  1. 没有(当节点为NULL时)
  2. 节点prevnext指向NULL的唯一节点