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:
- la liste vide: le train ne contenant pas de wagons (et donc ne transportant pas de données)
- ajout d'un élément: ajoutez un nouveau wagon contenant l'élément devant le train et accrochez-le au reste du train
- suppression d'un élément: recherchez le chariot contenant l'élément. Retirez-le (vous pourriez avoir besoin d'une grue ici :)), accrochez le chariot avant avec le chariot après.
- remplacement d'un élément: recherchez le chariot contenant l'ancien élément. Échangez l'ancien élément avec le nouvel élément.
- insérer un élément juste après un autre: recherchez le chariot contenant l'élément après lequel vous souhaitez insérer. Insérez un nouveau wagon après celui-ci, qui est accroché en conséquence (nous ne voulons pas que le train se désagrège) et placez-y le nouvel élément.
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:
- Si vous souhaitez insérer un élément avant un autre, vous devrez déplacer tous les éléments suivants vers le chariot suivant.
- Si vous souhaitez supprimer un élément, vous devrez déplacer tous les éléments suivants d'un chariot vers l'avant.
- Si vous avez besoin d'un train avec plus de wagons, vous devrez en construire un nouveau, car vous ne pouvez pas simplement ajouter un wagon. En revanche, trouver des chariots dans un tableau est beaucoup plus facile, car vous pouvez simplement les numéroter de façon permanente (leur ordre ne changera jamais).
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.