Ich mache meinen zweiten Java-Kurs. Wir geraten in Datenstrukturen. Ich habe eine Zuordnung für eine verknüpfte Liste vorgenommen und jetzt einen Stapel. Ich hatte Schwierigkeiten mit der verknüpften Liste. Der Stapel bereitete mir ein wenig Mühe, war aber viel einfacher.
Sollte ich mir Sorgen machen, mit diesen Algorithmen und Datenstrukturen Schwierigkeiten zu haben? Ich habe nur das Gefühl, dass ich es nicht wirklich begriffen habe.
algorithms
data-structures
Brock
quelle
quelle
Antworten:
Ich denke, Sie dürfen es nicht akzeptieren, diese Dinge nicht zu verstehen, weil sie wirklich grundlegend sind. Davon abgesehen ist es nichts Schlechtes, wenn Sie sie nicht verstehen. Sie können einem Kind eine verknüpfte Liste erklären. Also, wenn Ihr Lehrer es versäumt hat, es Ihnen zu erklären, ist es ebenso ihre Schuld. Sie sollten sich also keine Sorgen machen, sondern versuchen, Leute zu finden, die es Ihnen erklären können. Oft ist ein Kommilitone ein weitaus besserer Lehrer als ein Vollzeitakademiker.
Denken Sie an Züge
Stellen Sie sich vor, Sie haben eine Reihe von Eisenbahnwaggons, in denen jeder Wagen genug Kapazität hat, um ein Datenelement aufzunehmen. Jeder Wagen hat an seinem Ende eine Art Haken, der an der Vorderseite eines anderen Wagens befestigt werden kann.
Dies gibt Ihnen in der Tat eine verknüpfte Liste:
Im Gegensatz dazu könnte man sich ein Array als einen Zug mit einer bestimmten Anzahl von Wagen vorstellen, die in keiner Weise neu angeordnet werden können. Sie können lediglich die darin enthaltenen Daten ändern. Dieses Modell erklärt auch viele der Probleme, die Arrays haben:
Was den Stapel betrifft: Ein "Stapel" ist weniger eine Datenstruktur als eine Idee. Die Idee des Stapels ist, dass er sich wie ein Stapel Bücher verhält. Sie können nur Bücher auf den Stapel legen und Sie können immer nur das oberste Buch vom Stapel nehmen (zumindest, wenn die Bücher schwer genug sind).
Davon abgesehen kann eine verknüpfte Liste als Stapel verwendet werden, wenn Sie sich die Daten in den Wagen als Bücher und das Buch im ersten Wagen als obersten Stapel vorstellen.
Ich hoffe das hat dir geholfen. Vielleicht war es nicht so. Vielleicht bist du eher ein visueller Typ. In diesem Fall schlage ich vor, dass Sie jemanden finden, der gut darin ist, visuelle Erklärungen abzugeben und es Ihnen zu erklären. Es wird nicht lange dauern, aber es wird sich absolut lohnen.
Es ist in Ordnung, jetzt damit zu kämpfen. Aber es nur zu akzeptieren, ist auf lange Sicht keine Option.
quelle
Ich würde nicht sagen, dass Sie sich darüber Sorgen machen sollten, aber die einfache Tatsache, dass Sie Ihre Schwachstellen anerkennen, zeigt, dass Sie genau wissen, wo Sie härter lernen müssen. Ich denke, Sie werden von dieser Einstellung gut bedient und auf lange Sicht in Ordnung sein.
quelle
Um meinen Lieblings-CSCI-Lehrer zu zitieren:
Datenstrukturen klingen schwer, oder? Für mich klingt es abstrakt und ein bisschen komplex und vor allem ... wichtig!
Datenstrukturen sind ein wichtiger Kurs. Und es ist üblich zu kämpfen, aber weiter so! Solange du deine Wheaties isst und dabei bleibst, erreichst du den Regenbogen mit einer
bag
Füllunggeneric items
darunter.quelle
Sehr gute Punkte in anderen Antworten, nur eine Anmerkung: IMO-verknüpfte Listen können für viele Leute schwieriger sein als z. B. Stapel, weil sie auf Indirektion aufbauen (ausgedrückt durch Referenzen / Zeiger ). Und diese zugrunde liegenden Konzepte sind möglicherweise schwer zu verstehen .
quelle
Data Structures war der erste "harte" Kurs, den ich belegte. wir haben Fortran 77 anstelle von Java verwendet, aber die Konzepte sind weitgehend gleich.
Ich brauchte eine Woche länger als meine Klassenkameraden, um das Konzept einer verknüpften Liste zu entwickeln. Ich habe die Aufgabe abgelehnt, aber nach ein paar etwas frustrierenden Sitzungen mit meinem Professor hat es schließlich geklickt (buchstäblich: Ich hörte ein "Klicken" in meinem Kopf, als ich endlich verstand).
Jeder hat irgendwo in seinem CS-Lehrplan Probleme (es sei denn, er ist ein Freak). Wenn Sie verstehen, wo Ihre Schwächen liegen und wie Sie diese beheben können, müssen Sie sich wirklich keine Sorgen machen.
quelle
Hatten Sie Probleme beim Verstehen der verknüpften Liste oder nur bei der Implementierung?
Es ist nicht ungewöhnlich, dass ein neuer Programmierer dort Schwierigkeiten hat, da es möglicherweise das erste Mal ist, dass Sie sich überlegen müssen, was es wirklich bedeutet, wenn Sie schreiben:
Ich habe mich in ALGOL / W in der gleichen Übung vertieft, weil ich die Sprachsemantik nicht ganz verstanden habe. Ein Jahr später konnte ich mich kaum erinnern, warum ich Schwierigkeiten hatte.
quelle
Es wird einige Bereiche der Softwareentwicklung geben, die Sie schwieriger finden als andere. Ob es sich um bestimmte Algorithmen, bestimmte Entwurfsmuster oder bestimmte Verfahren handelt, ist von Person zu Person unterschiedlich. Ich stelle fest, dass ich etwas in einem echten Programm verwenden muss, bevor ich es vollständig verstehe.
Ich wäre besorgter, wenn jemand behaupten würde, alles zu wissen und nie Probleme damit gehabt hätte, etwas zu lernen.
Persönlich schien ich nie Probleme mit verknüpften Listen zu haben, aber dann arbeitete ich 8 Jahre lang an einem Programm, das sie überall verwendete, sodass ich täglich mit ihnen arbeitete. Solange Sie wissen, wo Sie die Informationen finden, die Sie benötigen, um Ihr Gedächtnis aufzufrischen, und die Bereiche kennen, in denen Sie "Probleme" haben, sollten Sie in Ordnung sein.
quelle
Ich hatte Probleme mit dem Kalkül und musste es ein zweites Mal nehmen. Das zweite Mal, als ich herausfand, dass ich schlau war, aber der erste Mathematiklehrer war im Grunde genommen nutzlos :)
Sie werden eine Menge Leute in der IT finden, die nicht gut kommunizieren können, selbst Lehrer. Auf der anderen Seite sind einige Leute in der IT wirklich großartige Schriftsteller und Kommunikationsmeister.
Manchmal kann das Lesen im Freien wirklich helfen. Die Qualität von Computerbüchern ist sehr unterschiedlich. Holen Sie sich auf Amazon und sehen Sie, welches Buch den Leuten gefällt.
Viel Glück.
quelle