問題タブ [singly-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 に答える
908 参照

c++ - リンクリストのカーソルが明確な理由なしに値を変更している

編集

簡単にするために、私は、リストを単純に通過する最も基本的なカーソルを作成したいと思っています。これは、方法や形状を変更したり、「開始」を形成したりすることはありません。私はまだ何かを返すときに変更され始めたいと思っていますが、直前ではありません。それで、新しいノードを追加したいときを除いて、何も変更せずにリストを調べて開始するためのポインターを作成することは可能ですか?

また、「ノード」ではない単純なポインタを使用してリストをたどることはできますか?

/編集

宿題の一部として作成する簡単な(単一の)リンクリストがあります。もちろん、それ以外にもやることはたくさんありますが、リストを邪魔にならないようにした後は、すべてを順調に進める必要がありますが、C ++をしばらく使用している間(ボーランドC ++でした)、私は多くのことをしました知っていたのは、半分忘れられているか、時代遅れです。私はしばらくの間Pythonでプログラミングしましたが、それはつまり、C++でのポインターの動作に不満を感じ続けるということです。

私の問題は、リストに新しいノードを追加しようとすると、カーソルが異常な方法で動作することです。以下で説明します。

編集:わかりました、私は変更しました:

大失敗ですが、宣言カーソルの後の結果は同じで、両方が同じメモリ位置(0x32ce8のようなもの)で始まります。

/編集

常にデバッグするとき、beginは同様の形式です:0x32ce02、「カーソル」を作成するとき、それは大きく異なる形式(より長い)ですが、これを行うと:cursor = begin、カーソルはこの0x32df02のようになります。

ただし、問題は、「if(ap_nr ap_nr)」に到達したときに、実行可能な理由がまったくないため、カーソルが0x32ce02になり、「cursor-> next=begin」が無限ループを保証することです。また、ノードをいくつ追加しても、これは常に発生するため、リストを印刷するたびに、最後に追加されたノードの無限のストリームになります。

私は何か間違ったことをしていますか?それは宣言ですか、それとも割り当て、作成ですか?なにか ?

また、ポインタが*別のモジュールのどこかで始まり、この関数を使用して新しいbeginを返す場合...それは機能するはずですよね?

PS私はまた簡単なカウンターソリューションをいただければ幸いです(私のものがちょうど良くない場合にこれを行う別の方法)

また、私がどのようにリストを作成したかを指摘する必要があります。これは、ノードの単純なリンクです。

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

c++ - 明らかな理由もなくポインタがリセットされるようです

編集:これがあまりにも曖昧で、何が間違っているのかを理解したり見つけたりすることができないかどうかも気にしません.1つは、コードに直接関係がないことを知っています。関数を終了するには...実際の「コード」の間ではありません。必要に応じてさらに追加しますが、これで十分だと思います。前もって感謝します!

単純な (一方向) リンク リストを作成しようとしていますが、STL やその他の既に作成された動的コンテナーを使用せずに、自分で作成する必要があります。簡単なものを作成しましたが、頭を包み込むことができないという問題があるようです。

リストに新しいノードを作成するときはいつでも(リストが変更された場合に備えて、リストの最初のノードを常に返します。「センチネル」または「ダミー」ノードは使用しません)、新しいノードは、私が導入した最初のノードに自動的にリセットされるプログラムの特定のポイント。

投稿をできるだけきれいに保つために、挿入するコードを減らして「機能」またはパターンを増やしますが、十分でない場合はさらに追加します。

仕組みは次のとおりです。

マイノードアイテム

メインでは、最初のノードを「偽の」ノードとして初期化します (ap_nr = -1、他の ap_nr を負にすることはできません)。

これが私の入力コマンドです:

そして、私が atm を使用するハンドラーの唯一の部分:

リストにノードを追加した後、デバッグを使用して追跡しました。最初のノードはそのままですが、2番目のノード(最初のノードの前に追加して新しい「開始」を返します)、最初は問題ありません(新しいメモリの場所がありますnew_begin->next = old_beginが、構造を終了するìnput_commandとリセットされます)

*以下は、input_command 構造体とプログラム図です:*

Main: - 「偽の」ノードを初期化する / メニュー ループに入る -> input_command に移動します。

UI: - コマンドの入力 -> コマンドの読み取り -> 検証 -> ハンドラーへの送信。

リスト: - 欲望ノードを「リスト」に追加します (実際にはリスト自体はなく、ノードがリンクされているだけです) -> 最初のノードを返します。最初のノードは正常です (新しいアドレスがあり、古いノードを指しています)

UI に戻ります: -> コマンド (下括弧) を入力してリセットします(つまり、どのノードを追加しても、それが最初に追加したノードになるということです。つまり、アパート 1 から 10 を導入するとします。それは記憶するだけです。 "1")。

何か足りないのですか?デザインに論理エラーがありますか? もっとコードを評価する必要がありますか? 何を追加すればよいか教えてください。これは少しあいまいです。

注:現在、メイン ノードの前にのみノードを追加できます。これが適切に機能するようになるまで、新しいものには焦点を当てません。設計が問題の一部でない限り、それも変更しませんが、それは悪いです私はメモや提案をいただければ幸いです。

これは add_node 関数の唯一の実装部分です:

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

c++ - ポインターのポインターを作成し、元を変更せずに変更しますか?

タイトルは自由に編集してください。

単純な連結リストを作成する必要があります (変更することはできません。こうあるべきです)。いいえ、STL または std::list を使用できません。そのほとんどは紙の上で行われますが、非常に基本的なカーソルの実装に問題があるようです。

これはリスト内の私のノードです (その一部):

ノード追加機能でリストを調べたい:

これは私が関数を呼び出す方法です:

begin (リストの先頭) から始まりcursor->next、最後に到達するまですべてのノードを通過するカーソルを作成したい(while (cursor->next!=0))

しかし、私は簡単に言うことはできません:

これは単にカーソルを begin で上書きするため、私の試みは無効になります。開始するためのポインターを作成し、STRUCT 関数を呼び出すことができるようにする必要があります "-> next"

これどうやってするの ?

*また *以前のノードを思い出すにはどうすればよいですか? 私はこれを行うことができます:

0 投票する
4 に答える
1343 参照

c++ - C++ で単一リンク リストを作成するためのヒント

Shape と呼ばれる共通の抽象基本クラスから派生したさまざまなオブジェクトを含む単一リンク リストを実装する必要がある uni 割り当てがあります。

クラスの実装については、GitHub にリンクします: shape.hshapes.cpp。これまでのところ、Shapeとその派生クラスで構成されていCircleます。Rectangle、以降もありPointますPolygon

ここで、これらのさまざまな種類の形状の単一リンク リストを実装する必要があります。これまでのところ、List-class と -classの次のクラス プロトタイプを作成しましたNode

void Append(Shape& inData)-objectへの要素の追加ShapeListは、次のスタイルで main から呼び出すことができる必要があります。

この情報が与えられた場合、どのように実装すればよいvoid Append(Shape& inData)ですか? 私はいくつかの異なるアプローチを試みましたが、これまでのところ正しい解決策を思いつきませんでした.

パラメータ toAppendが 以外のものであることも完全に可能です(Shape& inData)

編集:

私は実装しましAppend(Shape& inData)たが、時々しか機能しません:

しかし、一緒ではありません

これまでのところ、私のAppend()実装は次のようになります。

それは大丈夫ですか?

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

c - 数字の 2 つのリンクされたリストで表される 2 つの数値の乗算

私が持っている宿題のアイデアが必要です。次の定義を検討してください。

各リスト ノードは 1 つの数字を表します。各数値はリストで表されますが、逆の方法で表されます。数値の最後の桁はリストの最初のリスト ノードであり、数値の最初の桁はリストの最後のリスト ノードです。

関数を書きました

これは、他の 2 つのリストの合計を含む新しいリストを返します。

次に、乗算用の関数を作成する必要があります。

そして、私はそれを実装する方法にちょっとこだわっています。コードについてではなく、それを行う方法についてです。言うまでもなく、数値を整数に変換し、乗算し、結果をリストに変換することは許可されていません。

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

ありがとう。

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

python - Pythonの特別なメソッドを使用した単一リンクリスト、スタック

Node と LinkedList の 2 つのクラスを持つ単一リンク リストは、簡単に実装できます。ただし、私の問題は、最初のノード アクセスのみ (保存された長さなし、最後のノード アクセスなし、ダミー ノードを使用しない) の単一リンク リストの場合です。私が頭を抱えたり、オンラインについて多くを見つけることができない特別なメソッドは、次のような O(1) の複雑さを持つ python の組み込みリスト操作に似ています。

あらゆる種類のリード、ヘルプ、ガイダンスをいただければ幸いです。何らかの理由で、ダミーノードまたは格納された長さとイテレータなしで、Python の組み込みリスト演算子を LinkedList の独自のメソッドに解釈することはできません。それを見ると、私はとても近くにいるように見えますが、私が行ったり見つけたりすることは何も役に立たないようです. ありがとうございました。

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

c++ - クラス本体外のメンバー関数定義はエラーになる

私はテンプレートの概念にかなり慣れていません。何か不足していますか?

関数 getNewNode のコメントを外し、対応するステートメントを getNewNode 関数にコメンドすると、コンパイラはWhy is my function getNewNode not working as expected. のようなエラーを返します。どこで私は間違えましたか?

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

c++ - 関数のデフォルト値として開始値を使用して、リンクリストから値を出力します

リンクリスト内のすべての要素を逆方向に出力する再帰関数を作成しようとしています。

これは私が作った関数です:

さて、質問です。関数が開始値なしでリストを出力できるように、パラメーターpocetakのデフォルト値を設定したいと思います。

しかし、私がこれを行うとき:

常にエラーメッセージが表示されます:main.cpp:17:19:エラー:'lista :: printBack()'の呼び出しに一致する関数がありませんmain.cpp:17:19:注:候補は:lista.h:20: 10:注:void lista :: printBack(node *)lista.h:20:10:注:候補者は1つの引数を期待し、0が提供されます

それは私がこれを行うことができる方法ですか?ありがとうございました。

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

java - Java - 値を返すとループが壊れますか?

基本的に次の形式に従うコードをいくつか書いています。

コードは、ノードのリスト内の要素を検索します。ただし、私の質問は、if ステートメントが true を返す必要があると述べている要素を while ループが見つけた場合、単に true を返し、ループを中断するのでしょうか? さらに、ループが中断された場合、メソッドを続行して false を返しますか、または値が返されたらメソッドは完了しますか?

ありがとう

0 投票する
27 に答える
128882 参照

algorithm - インタビューの質問:新しいノードを作成せずに、2つの並べ替えられた単一リンクリストをマージします

これは、面接の筆記試験中に出されるプログラミングの質問です。「すでに並べ替えられている2つの単一リンクリストがあります。それらをマージして、新しい追加ノードを作成せずに新しいリストの先頭を返す必要があります。返されたリストも並べ替える必要があります。」

メソッドのシグネチャは次のとおりです。NodeMergeLists(Node list1、Node list2);

ノードクラスは以下のとおりです。

私は多くの解決策を試しましたが、余分なノードを作成しませんでした。助けてください。

付随するブログエントリは次のとおりですhttp://techieme.in/merging-two-sorted-singly-linked-list/