問題タブ [doubly-linked-list]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
381 参照

c - これは、二重にリンクされたリストを作成する有効な方法ですか?

重複の可能性:
双方向リンク リスト作成中のコンテキスト スイッチ

The Design of the UNIX Operating System (Maurice Bach)を読んでいました。

彼は、二重にリンクされたリストの次の例を示します。

1および でマークされたステートメントの目的が理解できません21間違っているようです、2冗長に見えます。

これは、二重にリンクされたリストを作成する有効な方法ですか?

0 投票する
1 に答える
979 参照

c++ - オブジェクトへのポインターのテンプレート化された二重リンク リストの実装

リスト内のデータがポインターである双方向リンクリストの実装について少し混乱しています。

リンク リスト クラスのプライベート部分は次のようになります。

ご覧のとおり、このリストは単なる古いオブジェクトではなく、オブジェクトへのポインターでいっぱいです。

仕様書には以下の記述があります。

このリストは、含まれている型 T にわたってテンプレート化されていますが、T のインスタンスではなく、T へのポインターのみを挿入および削除することに注意してください。これにより、Dlist 実装は、挿入されたオブジェクトを所有していることを認識し、リストコピーされ、リストが破棄された場合はそれらを破棄する必要があります。

私の現在の insertFront(T* o) の実装は次のとおりです。

しかし、これは間違っているようです。T にコピー コンストラクターがない場合はどうなるでしょうか。そして、これはどのようにしてリスト内のオブジェクトの唯一の所有権を保証するのでしょうか?

私はただできるでしょうか:

次のような場合、これは安全ではないようです。

次に、リストのアイテムも破棄されます。これは正しいです?私の理解はどこかずれていますか?

読んでくれてありがとう。

注: これは宿題のように見えますが、そうではありません。私は実際には Java 開発者であり、古い学校のプロジェクトを実行してポインタのスキルを磨いています。

0 投票する
1 に答える
656 参照

java - 双方向リンクリストでアルファベット順に並べる

私は疑問を持っています:

自転車に関するさまざまなデータを紹介できる次のプログラムを作成しました。私がやりたいことは、自転車の名前を紹介してから、紹介されたデータを読みたいときに、プログラムが自転車の名前をアルファベット順に表示することです

これは私のコードです

NodoL.java

ListaLigadaD.java

では、リストの先頭にノードを挿入するオプション #1 を選択するとします。そのため、プログラムは私に名前、スタイル、その他のものを紹介するように求めます. #2 を押してノードをリストの最後に挿入することにした場合、プログラムは上記と同じ情報を要求します。

最後に #3 を押すと、先ほど紹介した 2 種類の自転車がアルファベット順でなくても表示されます...

私の質問は次のとおりです。最初に BMX を導入し、次に Benotto を名前として導入した場合、#3 を押してデータを表示すると、最初に Benoto、次に BMX、そして名前のアルファベット順に?

前もって感謝します!

0 投票する
5 に答える
2334 参照

c++ - std::list は廃止すべきですか?

Bjarne Stroustrup の Going Native 2012 基調講演のスライドによると、最新ハードウェアでは a への挿入と削除は非常に非効率的です。std::list

ベクトルとリスト

挿入と削除では、ベクトルがリストを大幅に上回る

これが本当なら、どのようなユースケースが残されていstd::listますか? それなら非推奨にすべきではないですか?

0 投票する
1 に答える
167 参照

c++ - テンプレート クラスを使用したクラス インスタンス化のエラー

プログラムの何が問題なのかを理解するのに苦労しています。ヘッダー ファイル内のクラス宣言とメンバー関数宣言、1 つの .cpp ファイル内のメンバー関数定義、および main.cpp 内のメイン ドライバー プログラムで構成しました。ここにプログラムを投稿できるように、すべてを ideone の 1 つのファイルにまとめました。

http://ideone.com/PPZMuJ

ideone に表示されるエラーは、ビルド時に IDE が表示するエラーです。誰かが私が間違っていることを指摘できますか?

エラーは次のとおりです。

try/catch 句は無視してかまいません。その部分の作業はまだ完了していません。現在のエラーを回避しようとしているだけです。

0 投票する
1 に答える
5995 参照

c++ - 初心者:Circular Singly Linked Listの最初のプログラム、

デバッガーエラーなしでアドレスのみを返しますが、DEVC++とCode::Blocksコンパイラの両方がsenddontsend windowsエラーを表示していますが、クラスオブジェクトのみを初期化します。コードを含めました。

0 投票する
1 に答える
2045 参照

c - 双方向リンクリストの要素を置き換える方法

schcurr、search、および schtemp という 3 つの同じタイプのリンク リスト ノードがありますが、検索のみにリンクがあります。schcurr と schtemp はリンクされていません。検索を使用して schcurr を配置したい場所を見つけ、schtemp を使用してリンクを保持しています。次の条件が当てはまる場合、schcurr が検索を支配します。そこで、search を schcurr に置き換えたいと思います。検索は既にリストにあり、schcurr はまだ何にも接続されていません。

コードの関連部分を次のように配置しましたが、そこで立ち往生しています:(

PS: TC1 は int で、WF1 は float で、NULL ではありません。

ここで、search.prev の next と search.next の prev を修正する必要があります。search.prev.next=schcurr; を設定できないと思います。そして、seach.next.prev=schcurr; できますか?

どんな助けでも大歓迎です。

ノードの情報定義:

0 投票する
1 に答える
207 参照

c++ - 割り当てたまま std::list の項目を削除する

std::list定期的にマージされるアイテム (グラフ コンポーネント構造) を構築します。アイデアは、2 つのコンポーネントを接続するノードを発見すると、それらが 1 つのコンポーネントになり、リストにコンポーネントが列挙されるというものです。std::list<component>::iterator各コンポーネントには、マージされると設定される「親」コンポーネントへのハンドル (この場合は) があります。このように、特定のノードが属するコンポーネントを判別するには、このチェーンをたどります。

最後に、私が探しているのは、 item のイテレータを取り、それをリストから削除することを可能にする操作ですが、割り当てstd::list解除することはありません: リストの残りの構造は、普通に取り外します。N

できれば、アイテムを再割り当てし、リストからコピーして、実数removeまたはerase.

おそらく私はそれを達成することができspliceます。削除する要素を「がらくた」にスプライスする必要がありlistますね。

0 投票する
1 に答える
184 参照

c - 二重にリンクされたリストをトラバースしてクラッシュする

これは、二重にリンクされたリストを作成し、B0 ... n011 ....(n + 1)1B文字で埋めて印刷するように設計されたプログラムのコードスニペットです。残念ながら、トラバースバック中にクラッシュします。なんで?

turing_machine.exeの0x771a15deで未処理の例外:0xC0000005:アクセス違反の読み取り場所0xcdcdcdd5。

0 投票する
2 に答える
288 参照

c - 双方向リンク リストの現在の位置をマークする

この関数は、左側の「[q]」で現在の要素をマークするリストの内容を表示する必要があります。残念ながら、プレーンデータのみが表示されます。なんで?

完全を期すために、リストを初期化する関数を紹介しましょう。