Je prends mon deuxième cours sur Java. Nous entrons dans les structures de données. J'ai fait une affectation sur une liste chaînée, et maintenant une pile. J'ai eu du mal avec la liste chaînée. La pile m'a donné un peu de mal, mais c'était beaucoup plus facile.
Dois-je m'inquiéter d'avoir du mal avec ces algorithmes et structures de données? J'ai juste l'impression de ne pas l'avoir vraiment compris.
Réponses:
Je pense que vous ne devez pas accepter de ne pas comprendre ces choses, car elles sont vraiment fondamentales. Cela étant dit, ne pas les comprendre ne vous fait pas de mal. Vous pouvez expliquer une liste chaînée à un enfant. Donc, si votre professeur ne vous les a pas expliquées, c'est tout autant de leur faute. Vous ne devez donc pas passer du temps à vous inquiéter, mais plutôt essayer de trouver des gens qui peuvent vous l'expliquer. Souvent, un camarade de classe est un enseignant bien meilleur qu'un universitaire à temps plein.
Pensez aux trains
Imaginez, vous avez un ensemble de wagons de chemin de fer, où chaque wagon a une capacité suffisante, pour contenir une seule donnée. Chaque chariot a une sorte de crochet à son extrémité, qui peut être attaché à l'avant d'un autre chariot.
Cela vous donne en fait une liste de liens:
Contrairement à cela, vous pourriez considérer un réseau comme un train avec un nombre donné de wagons, qui ne peuvent être réarrangés en aucune façon. Tout ce que vous pouvez faire est de modifier les données qu'ils contiennent. Ce modèle explique également de nombreux problèmes rencontrés par les tableaux:
Quant à la pile: Une «pile» est moins une structure de données qu'une idée. L'idée de la pile est qu'elle agit un peu comme une pile de livres. Vous ne pouvez mettre que des livres sur le dessus de la pile et vous ne pouvez jamais retirer le livre du haut de la pile (du moins si les livres sont suffisamment lourds).
Cela étant dit, une liste chaînée peut être utilisée comme une pile, si vous considérez les données dans les chariots comme des livres, et le livre dans le premier chariot comme le haut de la pile.
J'espère donc que cela vous a aidé. Peut-être que non. Vous êtes peut-être plutôt du type visuel. Dans ce cas, je vous suggère de trouver quelqu'un qui sait bien donner des explications visuelles et vous l'expliquer. Cela ne prendra pas longtemps, mais cela en vaudra la peine.
C'est ok de lutter avec ça maintenant. Mais simplement l'accepter n'est pas une option à long terme.
la source
Je ne dirais pas que vous "devriez vous en inquiéter", mais le simple fait que vous reconnaissez vos points faibles montre que vous savez exactement où étudier plus. Je pense que vous serez bien servis par cette attitude et que tout ira bien à long terme.
la source
Pour citer mon professeur préféré du CSCI:
Les structures de données semblent difficiles, non? Pour moi, cela semble abstrait et un peu complexe et surtout ... important!
Les structures de données sont un cours essentiel. Et il est courant de lutter, mais continuez! Tant que vous mangez vos Wheaties et continuez, vous atteindrez l'arc-en-ciel avec un
bag
rempli degeneric items
dessous.la source
Très bons points dans d'autres réponses, juste une note à ajouter: les listes liées IMO peuvent être plus difficiles que par exemple les piles pour beaucoup de gens car elles s'appuient sur l' indirection (exprimées via des références / pointeurs ). Et ces concepts sous-jacents peuvent être difficiles à saisir .
la source
Les structures de données ont été la première classe «difficile» que j'ai suivie; nous avons utilisé Fortran 77 au lieu de Java, mais les concepts sont largement les mêmes.
Il m'a fallu une semaine de plus que mes camarades de classe pour comprendre le concept d'une liste chaînée; J'ai biffé le devoir, mais après quelques séances légèrement frustrantes avec mon professeur, il a finalement cliqué (littéralement; j'ai entendu un "clic" dans ma tête quand j'ai finalement compris).
Tout le monde a des problèmes quelque part dans son programme CS (sauf s'ils sont des monstres). Si vous comprenez où sont vos faiblesses et comment y remédier, vous n'avez vraiment rien à craindre.
la source
Avez-vous eu du mal à comprendre la liste chaînée, ou tout simplement des problèmes avec votre implémentation?
Il n'est pas inhabituel pour un nouveau programmeur d'avoir des difficultés, car c'est peut-être la première fois que vous devez réfléchir à ce que cela signifie vraiment lorsque vous écrivez:
Je me suis tout tordu dans ALGOL / W sur le même exercice, parce que je ne comprenais pas vraiment la sémantique du langage. Un an plus tard, je pouvais à peine me rappeler pourquoi j'avais des difficultés.
la source
Il y a forcément des domaines de développement logiciel que vous trouvez plus difficiles que d'autres. Que ce soit certains algorithmes, certains modèles de conception ou certaines procédures varient d'une personne à l'autre. Je trouve que je dois utiliser quelque chose sur un vrai programme avant de bien le comprendre.
Je serais plus inquiet si quelqu'un prétendait tout savoir et n'avait jamais eu de problèmes pour apprendre quelque chose.
Personnellement, je n'ai jamais semblé avoir de problèmes avec les listes chaînées, mais j'ai ensuite travaillé sur un programme pendant 8 ans qui les utilisait partout, donc je travaillais avec eux quotidiennement. Tant que vous savez où trouver les informations dont vous avez besoin pour rafraîchir votre mémoire et connaître les zones où vous avez des "problèmes", vous devriez être OK.
la source
J'ai eu des problèmes avec le calcul et j'ai dû le reprendre une deuxième fois. La deuxième fois, j'ai découvert que j'étais intelligent, mais le premier professeur de mathématiques était pratiquement inutile :)
Vous allez trouver beaucoup de personnes en informatique qui ne peuvent pas bien communiquer, même des enseignants. D'un autre côté, certains informaticiens sont de véritables grands écrivains et maîtres communicateurs.
Parfois, la lecture à l'extérieur peut vraiment aider. Les livres informatiques varient énormément en qualité. Montez sur Amazon et voyez ce que les gens aiment vraiment aimé.
Bonne chance.
la source