0
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;
}

上記のコードは、ノードを二重リストに挿入しようとするとセグメンテーション違反を引き起こします。なぜですか?= /

4

2 に答える 2

2

NULLポインターをチェックする必要がありnodeます。追加を繰り返してリストを作成するときによくあるように、がリストの先頭または末尾にある場合に何が起こるかを検討してください。

「孤独な」リスト項目は通常、prevnext等しいの両方を持ちNULLます。

于 2013-02-04T16:00:10.120 に答える
0

リストに含まれる条件を処理する

  1. なし (ノードが の場合NULL)
  2. ノードprevnextポイントがある 1 つのノードのみNULL
于 2013-02-04T16:20:47.703 に答える