0

少なくとも 1 つの既存のノードを持つノードを追加するときに、ptr を prev と next に設定する方法を理解するのに問題があります。最初のノードの追加は簡単で、ptrs を先頭に設定するだけです。これを精神的に見るのに助けが必要です。また、このプログラムはキューであるため、各ノードはリストの最後に追加されます。

if (Empty())
    {
        front = new qnode;
        front->next=front;
        front->prev=front;
        front->data = item;
    }
    else if (front->prev=front)
    {
        front->prev = new qnode;
        front->prev->next= front;
        front->next=front->prev;
        front->prev->data = item;
    }
    else
    {

    }

私が今持っているものはまだ得られていません

else
    {
        front->prev= new qnode;
        front->prev->data= item;
        front->prev->next=front;
        front->prev=front->prev->prev;

    }
4

4 に答える 4

3

この画像が少しでも役に立てば幸いですここに画像の説明を入力

1 アイテム 2 アイテム 3 アイテムの画像を作成しました

ポインターは実際のオブジェクトを指しているだけで、前面が青で前が茶色の場合、黒い四角形がオブジェクト全体であることを意味します (これらは参照として存在します)。

リンクされたリストが非常にトリッキーになる可能性があり、描画が常に私を助けてくれることを願っています。

リストの先頭に項目を追加するには、次のようなコードがあります。

 //ok first I'll define some variables for you
 //last === the last node in the list
 //head === the first node in the list
 //node === the new node you are adding;
 qnode node = new qnode;
 node.data = data; //whatever data you are holding
 node->next = last; //last element in the list since it is circular;
 node->prev = head; //you want the new node to point the the first node since it's getting added before that;
 head->next = node; //you want the head of the node to point to the new node not the last item
 last->prev = node; //last node now should point to the new node you just added not the head;

ここに画像の説明を入力

于 2013-11-06T22:20:38.773 に答える
0

else if1 つの要素の場合は複数の要素の場合と変わらないと思うので、なぜ が必要なのかわかりません。==いずれにせよ、そこに構文エラーがあります -の代わりに書きたかったの=です。

さらに重要なことは、あなたがしたいことは次のとおりです。

  • 新しい qnode を作成する
  • 新規ノードのデータをアイテムに設定
  • 新しいノードの次を先頭に設定します
  • 新しいノードの prev を front->prev に設定します
  • フロントの prev を新しいノードに設定します。

これがどのように機能するかを紙で確認できます。

于 2013-11-06T22:11:20.457 に答える
0

循環二重リンク リストでは、先頭へのポインタと末尾 (リストの最後の要素) へのポインタの 2 つのポインタがあります。要素に next がある場合、次の要素の prev は、その要素の next 要素を介してそれを指している要素である必要があります。head 要素が削除されない限り、head ポインターは移動しないはずです。あなたの尾は、それが指している要素が次の要素として頭を持つように常に移動します。うまくいけば、これが役に立ちます

于 2013-11-06T22:13:24.660 に答える
0

常に最後に追加するため、要素が 1 つのキューの場合と複数の要素があるリストの場合は同じです。紙とペンを持ってスケッチをすると、とても簡単にできます。

于 2013-11-06T22:14:33.397 に答える