4

ここで何が起こっているのか、私は本当に混乱しています..

私は機能を持っています

void addToFront(int data)  
{
  Node* tmp = new Node();
  tmp -> data = data;
  tmp -> next = head;
  head = tmp;
}

行を実行するtmp-> next = headと、tmpポインターheadが指しているもの (リストの現在の最初の要素) を指すようになりますか? それはそれがどのように感じるかですが、それは単にそれを指し示すのではないheadでしょうか? すると、head = tmp作成した新しいノードに頭を向けることになりますよね?

4

4 に答える 4

13

これがあなたのリストの様子です(仮定)

 +----+-----+   +-----+-----+   +-----+------+
 |  A |     +-->|     |     +-->|     |      |
 +----+-----+   +-----+-----+   +-----+------+
 /

Headは場所を指していますA

新しいノードを作成します

 +----+----+
 | B  |    |
 +----+----+
 /

tmpを指すようになりましたB。にデータを挿入してtmp->dataから、 を作成しtmp -> next = head;ます。これで、次のようになりました。

 +----+----+     +----+-----+   +-----+-----+   +-----+------+
 | B  |next|---->|  A |     +-->|     |     +-->|     |      |
 +----+----+     +----+-----+   +-----+-----+   +-----+------+
                  /

そして、の代わりにheadを指すようにします。BA

 +----+----+     +----+-----+   +-----+-----+   +-----+------+
 | B  |next|---->|  A |     +-->|     |     +-->|     |      |
 +----+----+     +----+-----+   +-----+-----+   +-----+------+
 /  \

head&今tmpを指すB

于 2013-10-05T05:22:44.417 に答える
0
void addToFront(int data) {
  Node* tmp = new Node(t); //assume your Node constructor can handle this
  if(numElements != 0) {   //should check weather empty or not
    x->next = head;        //link them first
    head = x;             //and now make the head point to the new head
  } else {      //if empty you should also set the tail pointer
    head = x;
    tail = x;
  }
  numElements++;
}

ヘッドがある場合、新しいノード「next」は、別のノードを指している現在のヘッドを指します。head=x の場合、head と呼ばれるポインターは、前のノードではなく新しいノードを指すように設定されます。

于 2016-10-16T09:45:06.083 に答える