Javaの2番目のコースを受講しています。データ構造を調べています。リンクされたリストで割り当てを行いましたが、今はスタックです。リンクされたリストで苦労しました。スタックは私に少しトラブルを与えましたが、はるかに簡単でした。
これらのアルゴリズムとデータ構造で苦労することについて心配する必要がありますか?よくわからなかったような気がします。
これらは根本的なものなので、理解しないことを受け入れてはいけないと思います。そうは言っても、あなたがそれらを理解していなくても悪いと感じることはありません。リンクされたリストを子供に説明できます。ですから、先生があなたに説明し損ねたとしても、それは彼らのせいです。したがって、心配する時間を費やすのではなく、説明できる人を探すようにしてください。多くの場合、仲間の学生はフルタイムのアカデミックよりもはるかに優れた教師です。
想像してみてください。1組の鉄道車両があり、各車両には1つのデータを格納するのに十分な容量があります。各キャリッジには、その端にある種のフックがあり、別のキャリッジの前部に取り付けることができます。
これは実際にリンクされたリストを提供します:
それとは対照的に、配列は、なんらかの方法で並べ替えることができない、指定された数の客車を備えた列車と考えることができます。あなたができることはそれらの中のデータを変更することだけです。このモデルは、配列が持つ多くの問題についても説明しています。
スタックについて:「スタック」は、アイデアよりもデータ構造ではありません。スタックの考え方は、それが本のスタックのように振る舞うということです。スタックの上にのみ本を置くことができ、スタックから一番上の本だけを取り出すことができます(少なくとも本が十分に重い場合)。
とはいえ、キャリッジのデータを本と見なし、最初のキャリッジの本をスタックの最上部と考える場合、リンクリストをスタックとして使用できます。
これがお役に立てば幸いです。多分それはしませんでした。多分あなたはより視覚的なタイプの人です。その場合は、視覚的な説明が得意な人を探して説明することをお勧めします。それほど時間はかかりませんが、それだけの価値があります。
これで今は苦労しても大丈夫です。しかし、単にそれを受け入れることは、長期的には選択肢ではありません。
あなたがそれについて「心配する必要がある」とは言いませんが、あなたの弱点を認めるという単純な事実は、あなたがどこでもっと勉強すべきかを正確に知っていることを示しています。私はあなたがその態度でよく仕え、長期的には大丈夫だと思います。
私のお気に入りのCSCI教師を引用するには:
"Panic, but panic early."
データ構造は難しいですね。私にとっては、それは抽象的で少し複雑に聞こえますが、何よりも重要です!
データ構造は重要なコースです。そして、苦労することはよくありますが、続けてください! Wheatiesを食べてそれを続ける限り、bag
がgeneric items
で満たされた状態でRainbowに到達します。
他の回答の非常に良い点、追加する1つのメモ:IMOリンクリストは、たとえば、 indirection(references/pointers)。そして これらの基本的な概念を理解するのは難しいかもしれません 。
データ構造は、私が採用した最初の「ハード」クラスでした。 JavaではなくFortran 77を使用しましたが、概念はほとんど同じです。
リンクリストの概念を理解するのに、クラスメートよりも1週間長くかかりました。私は割り当てに異議を唱えましたが、教授との少しイライラするセッションの後で、最終的にカチッという音がしました(文字通り、最終的に理解したときに頭の中で「カチッ」という音が聞こえました)。
誰もがCSカリキュラムでどこかに問題を抱えています(奇抜な場合を除きます)。あなたの弱点がどこにあるか、そしてそれらにどのように対処するかを理解していれば、本当に心配することは何もありません。
リンクされたリストの理解に問題がありましたか、それとも実装に問題がありますか?
新しいプログラマがそこで困難を感じることは珍しいことではありません。なぜなら、それが何を意味するかについて考える必要があるのは初めてだからですreallyと書くとき:
list.head = null;
Element e = new Element(...);
e.next = list.head;
list.head = e;
言語のセマンティクスを完全に理解していなかったので、同じ演習でALGOL/Wのすべてをひねりました。一年後、なぜ私は苦労したのかをほとんど思い出すことができませんでした。
あなたが他よりも難しいと感じるソフトウェア開発のいくつかの領域があるはずです。特定のアルゴリズムであっても、特定の設計パターンや特定の手順であっても、人によって異なります。完全に理解する前に、実際のプログラムで何かを使用する必要があることに気づきました。
もし誰かがそれをすべて知っていると主張し、何かを学ぶのに問題を経験したことがなかったら、私はもっと心配になるでしょう。
個人的にはリンクリストに問題があるとは思われませんでしたが、それから8年間それらを使用するプログラムに取り組みましたどこでもなので、日常的にそれらを扱いました。あなたが知っている限りwhereあなたの記憶をリフレッシュするために必要な情報を見つけ、あなたが「トラブル」を抱えている領域を知っているなら、大丈夫であるべきです。
私は微積分に問題があり、二度目にそれをしなければなりませんでした。 2回目に私は賢いことに気付きましたが、最初の数学の先生は基本的に役に立たなかった:)
ITには、教師でさえうまくコミュニケーションできない人をたくさん見つけるでしょう。一方、ITの一部の人々は、本当に優れたライターであり、コミュニケーターである。
時々、外で読むことは本当に助けになります。コンピュータブックの品質は大きく異なります。 Amazonにアクセスして、人々が好きな本が実際に好きだったものを見てください。
幸運を。