0

私は C のコード セグメントに腹を立てており、介入を望んでいます。私は持っている:

typedef struct node{
int value;    
node_t *next;
node_t *prev;
} node_t;

node_t current_node;     
node_t other_list;

void transfer(node_t **ipp) 
{
  if (*ipp == NULL)
  {
     *ipp = current_node;
     current_node->prev->next = current_node->next; 
  }
  else 
  {
    (*ipp)->next = current_node;
    ipp = &(*ipp)->next;
    current_node->prev->next = current_node->next;
  }
}

int main(void)
{
 int i;
 for(i= 0; i< 10; i++)
 {
   transfer(&other_list);
   current_node = current_node->next;
 }

最初のリストから項目を削除して、2 番目のリストに転送できるようにすべきではありませんか? 最後に挿入されたノードを other_list ポイントにするべきではありませんか?

4

1 に答える 1

1

2 つの問題があります。

  1. リスト内の前のノードの「次の」ポインターを更新していますが、リスト内の次のノードの「前の」ポインターは更新していません。
  2. 現在のノードが実際にリスト内の別の要素を指していることを確認していません。current_node->prevである可能性がありますnull
于 2013-02-16T22:51:48.537 に答える