タグ付けされた質問 「data-structures」

データ構造は、データの特定のプロパティを効率的に照会および/または更新できるようにデータを編成する方法です。


6
さまざまなデータ構造の実用的な使用[終了]
休業。この質問はもっと焦点を合わせる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 昨年休業。 この質問を改善する データ構造については多くの話がありますが、データ構造の簡単なリストとその実用的な使い方はありません。私は面接のために勉強しようとしていますが、これは他の多くの人たちと一緒に私を助けてくれると思います。私はこのようなものを探しています: データ構造-例/用途 ハッシュテーブル-高速データルックアップ...次に例を示します 配列-... 二分木-... このようなリソースがどこかにある場合は、お知らせください。 ありがとう! 編集:私はウィキペディアがすべてで良いことを意味しますが、ほとんどのページでは実際の使用法をリストしていません。それ以上のものを探しています。

26
2つのリンクリストが結合するかどうかを確認します。もしそうなら、どこ?
この質問は古いかもしれませんが、私は答えを考えることができませんでした。 たとえば、長さが異なる2つのリストがあり、ある時点でマージされます。マージポイントがどこにあるかをどのように知ることができますか? 条件: 長さがわからない 各リストを一度だけ解析する必要があります。


30
再帰的にJavaでリンクリストを逆にする
私はしばらくの間、クラスのJavaプロジェクトに取り組んでいます。これは、リンクリストの実装です(ここではと呼ばれAddressList、と呼ばれる単純なノードを含みますListNode)。問題は、すべてを再帰的アルゴリズムで実行する必要があることです。私は1つの方法ではなくすべてをうまく行うことができました:public AddressList reverse() ListNode: public class ListNode{ public String data; public ListNode next; } 現在、私のreverse関数は、再帰を許可する引数を取るヘルパー関数を呼び出すだけです。 public AddressList reverse(){ return new AddressList(this.reverse(this.head)); } 私のヘルパー関数にはの署名がありprivate ListNode reverse(ListNode current)ます。 現時点では、スタックを使用して繰り返し作業していますが、これは仕様に必要なものではありません。再帰的に逆にして手動でJavaコードに変換するアルゴリズムをCで見つけましたが、うまくいきましたが、理解できませんでした。 編集:気にしないで、それまでの間、それを理解しました。 private AddressList reverse(ListNode current, AddressList reversedList){ if(current == null) return reversedList; reversedList.addToFront(current.getData()); return this.reverse(current.getNext(), reversedList); } 私がここにいる間、誰かがこのルートに問題を感じていますか?

5
Preorder、Postorder、Inorder Binary Search Tree Traversal戦略を使用する場合
私は最近、BSTを十分に活用している一方で、インオーダートラバーサル以外を使用することさえ考えたことがないことに気付きました(プログラムを前後のトラバーサルに使用するのがいかに簡単であるかを知っており、知っています)。 これに気づいたとき、私は私の古いデータ構造の教科書の一部を引き出して、予約注文と注文注文の走査の有用性の背後にある理由を探しました-彼らは多くのことを言いませんでした。 プレオーダー/ポストオーダーを実際に使用する場合の例は何ですか?順序より意味があるのはいつですか?




13
千の電話番号を保存する最も効率的な方法
これはグーグルのインタビューの質問です: 保存する電話番号は約10桁で、約1000あります。あなたは、それぞれの最初の5桁が数千の数字で同じであると仮定することができます。次の操作を実行する必要があります。指定された番号が存在するかどうかを検索します。b。すべての番号を印刷 これを行う最も効率的なスペース節約方法は何ですか? 私はハッシュテーブルとハフマンコーディングに答えましたが、面接担当者は私が正しい方向に進んでいないと述べました。ここで私を助けてください。 接尾辞トライを使用できますか? 理想的には、1000の数値を格納するには数値あたり4バイトがかかるため、1000の数値を格納するには全体で4000バイトがかかります。量的には、ストレージを4000バイト未満に減らしたいと思っています。これは、面接官が私に説明したものです。

3
ダイクストラのアルゴリズムが減少キーを使用するのはなぜですか?
ダイクストラのアルゴリズムは私に教えられました while pqueue is not empty: distance, node = pqueue.delete_min() if node has been visited: continue else: mark node as visited if node == target: break for each neighbor of node: pqueue.insert(distance + distance_to_neighbor, neighbor) しかし、私はアルゴリズムに関していくつかの読書をしてきました、そして私が見る多くのバージョンは挿入ではなく減少キーを使用しています。 これはなぜですか、2つのアプローチの違いは何ですか?


6
C ++の関数内で構造とクラスを定義できるのはなぜですか?
私は誤ってC ++でこのようなことをしましたが、それは機能します。なぜ私はこれを行うことができますか? int main(int argc, char** argv) { struct MyStruct { int somevalue; }; MyStruct s; s.somevalue = 5; } これを行った後、私は昔、C ++用の貧乏人の関数型プログラミングツールの一種として、このトリックについてどこかで読んだことを思い出しましたが、なぜこれが有効なのか、どこで読んだのか思い出せません。 どちらの質問への回答も大歓迎です! 注:質問を書いているとき、この質問への参照はありませんでしたが、現在のサイドバーがそれを指摘しているので、参照用にここに置きます。どちらにしても、質問は異なりますが、役立つ場合があります。


4
RBツリー、Bツリー、またはAVLツリーを選択するのはいつですか?
プログラマーとして、いつRBツリー、Bツリー、またはAVLツリーの使用を検討すべきですか?選択を決定する前に考慮する必要がある重要なポイントは何ですか? 誰かが各ツリー構造のシナリオを使用して、キーポイントを参照して他のツリー構造を選択する理由を説明できますか?

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