タグ付けされた質問 「linked-list」

リンクされたリストはデータ構造であり、リストの要素は必ずしも順番に格納されるわけではなく、各要素にはリスト内の次の(およびオプションで前の)要素への参照が含まれます。このタグは、使用されているプログラミング言語([c]、[c ++]、[java]など)と、使用されているライブラリまたはプラグイン([c ++-standard-library]など)を示す追加のタグとともに使用する必要があります。投稿自体には、問題のソースコードを含める必要があります。

30
JavaでArrayListよりもLinkedListを使用する場合
私は常に単純に使用するものでした: List<String> names = new ArrayList<>(); 移植性のタイプ名としてインターフェースを使用しているので、このような質問をしたときにコードを書き直すことができます。 いつLinkedList、ArrayListまたはその逆に使用する必要がありますか?

25
リンクされたリストでループを検出する方法は?
Javaでリンクされたリスト構造があるとします。ノードで構成されています: class Node { Node next; // some user data } そして、各ノードは次のノードを指しますが、最後のノードは例外で、nextはnullです。リストにループが含まれている可能性があるとしましょう。つまり、最後のノードはnullの代わりに、リストの前にあるノードの1つを参照しています。 書くための最良の方法は何ですか boolean hasLoop(Node first) true指定されたノードがループのあるリストの最初である場合、どちらが返されfalseますか?一定量のスペースと妥当な時間を取るように、どのように書くことができますか? ループのあるリストがどのようなものかを次に示します。


30
配列とリンクリスト
誰かがリンクされたリストを配列で使用したいのはなぜですか? リンクされたリストをコーディングすることは、間違いなく、配列を使用するよりも少し多くの仕事であり、何が追加の努力を正当化するのか疑問に思うかもしれません。 新しい要素の挿入はリンクされたリストでは取るに足らないことだと思いますが、これは配列の主要な作業です。リンクリストを使用して一連のデータを格納することと、配列に格納することには、他に利点がありますか? この質問は一般的なデータ構造に関係していますが、他の質問は特定のJavaクラスについて具体的に尋ねているため、この質問はこの質問の複製ではありません。



28
Pythonリンクリスト
リンクされたリストをPythonで使用する最も簡単な方法は何ですか?スキームでは、リンクリストは単にによって定義され'(1 2 3 4 5)ます。Pythonのリスト、[1, 2, 3, 4, 5]およびタプルは(1, 2, 3, 4, 5)、実際にはリンクリストではありません。リンクリストには、一定時間の連結など、いくつかの優れたプロパティがあり、それらの別々の部分を参照できます。それらを不変にすると、簡単に操作できます!


21
サイクルリンクリストでサイクル開始ノードを見つける方法について説明してください。
亀と野ウサギの会議はループの存在を終了することを理解していますが、ウサギを会議場所に置いたまま、リンクされたリストの先頭に亀を移動し、次に両方を1ステップずつ移動して、サイクルの開始点で会うにはどうすればよいですか?

8
ArrayDequeがLinkedListよりも優れている理由
どちらもDequeインターフェースを実装しているため、JavaのArrayDequeがJavaのLinkedListより優れている理由を理解しようとしています。 コードでArrayDequeを使用している人はほとんど見ません。誰かがArrayDequeの実装方法にもっと光を当てれば、それは役に立ちます。 理解できれば、もっと自信を持って使えます。ヘッドリファレンスとテールリファレンスの管理方法について、JDK実装を明確に理解できませんでした。

6
Javaでリンクリストデータ構造を作成するにはどうすればよいですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。事実、参考文献、専門知識によって回答が裏付けられることを期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 Javaでリンクリストを作成する最良の方法は何ですか?

11
リンクされたリストがノード内にノードを格納する代わりにポインタを使用する理由
私はJavaで広範囲に及ぶ前にリンクリストを扱ってきましたが、C ++は非常に初めてです。私はプロジェクトで与えられたこのノードクラスをうまく使っていました class Node { public: Node(int data); int m_data; Node *m_next; }; しかし、私はあまりよく答えられなかった一つの質問をしました。なぜ使用する必要があるのですか Node *m_next; リストの次のノードを指すのではなく Node m_next; ポインタバージョンを使用する方がよいことを理解しています。事実について議論するつもりはありませんが、なぜそれが優れているのかはわかりません。私は、ポインターがメモリ割り当てにどのように優れているかについて明確な答えが得られなかったので、ここにいる誰かがそれをよりよく理解するのに役立つかどうか疑問に思っていました。

15
リンクされたリストはどのような状況で役立ちますか?
ほとんどの場合、リンクされたリストを使用しようとする人がいますが、私には選択が悪い(または非常に悪い)ように思えます。おそらく、リンクされたリストがデータ構造の適切な選択である、またはそうでない状況を調査することは有用でしょう。 理想的には、データ構造の選択に使用する基準、および特定の状況でどのデータ構造が最適に機能する可能性が高いかについて回答が説明されます。 編集:私は言わなければなりません、私は数だけでなく答えの質にもかなり感銘を受けました。私は1つしか受け入れることができませんが、もう少し良いものがなかったら、受け入れる価値があったと言えるでしょう。リンクされたリストが真の利点を提供する状況を指摘したカップル(特に、私が最終的に受け入れたもの)のみ。スティーブジェソップは、1つだけでなく3つの異なる答えを思いついたので、何らかの名誉ある言及に値すると思います。もちろん、回答ではなくコメントとしてのみ投稿されていたとしても、Neilのブログエントリも一読の価値があると思います。

30
2つのポインタのみを使用して、単一リンクリストを逆にする方法は?
2つのポインタのみを使用して、単一リンクリストを逆にするロジックが存在するのだろうか。 以下は、すなわち3つのポインタを使用して、単一リンクリストを反転させるために使用されp、q、r: struct node { int data; struct node *link; }; void reverse() { struct node *p = first, *q = NULL, *r; while (p != NULL) { r = q; q = p; p = p->link; q->link = r; } first = q; } リンクされたリストを逆にする他の代替はありますか?時間の複雑さの観点から、単一にリンクされたリストを逆にするための最良のロジックは何でしょうか?

14
リンクされたリストO(1)の途中に挿入するのはなぜですか?
リンクされたリストに関するウィキペディアの記事によると、リンクされたリストの途中に挿入することはO(1)と見なされます。O(n)だと思います。リストの最後近くにある可能性のあるノードを見つける必要はありませんか? この分析では、ノード操作の発見(必須ではあります)と挿入自体の説明は含まれていませんか? 編集: リンクリストには、配列に比べていくつかの利点があります。リストの特定のポイントへの要素の挿入は一定時間の操作ですが、配列への挿入は要素の半分以上を移動する必要がある場合があります。 上記の文は私に少し誤解を招くものです。私が間違っている場合は私を修正しますが、結論は次のようになります: 配列: 挿入/削除のポイントを見つけるO(1) 挿入/削除の実行O(n) リンクリスト: 挿入/削除のポイントを見つけるO(n) 挿入/削除の実行O(1) 私はあなたが位置を見つける必要がない唯一の時間はあなたがそれへのある種のポインタを保持している場合だと思います(いくつかのケースでは頭と尾のように)。したがって、リンクリストは常に挿入/削除オプションの配列に勝るとは言えません。
105 linked-list  big-o 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.