Ok, tu pars sur une autre piste.
Première réponse : mais tu fais comme tu veux ! Du moment que tu n'oublies aucune information…
Suggestion : prends des pièces, des sucres, n'importe quoi, et simules à la main ce qu'il faut faire.
Ensuite, même chose avec les deux super-méga-outils qu'on a pas encore fait mieux : papier+crayon.
Par contre, fais très attention à ce que tu écris, à ta manière de formuler. Parce que "un tableau de type record", je ne comprends pas. Mais, un tableau de (contenant des) records, là oui.
Tes integers pour suivant/précédent, sont-elles dans le record ?
- si oui : ok, tu as un tableau à une dimension de records,
- si non : ok, mais tu dois avoir (par exemple) deux lignes supplémentaires à ton tableau; et ne pas oublier qu'un élément de liste c'est 3 cases du tableau.
Ton tableau fait [1..100] ? Déclares donc la constante max = 100, et ton tableau fait [1..max].
Tu veux insérer un élément ? Il faut que tu connaisses à tout instant la longueur que fait déjà ta liste, par exemple avec une variable entière LongueurListe. Et forcément, tu dois toujours vérifier que LongueurListe > 0 si tu veux enlever un élément, et que LongueurListe < max si tu veux en ajouter.
Maintenant, on suppose qu'il y a de la place dans le tableau. Tu veux insérer un élément à la Nème place de la liste.
* Si ton tableau contient les éléments dans le bon ordre, il suffit de décaler (recopier) d'un cran vers le bout du tableau les éléments de N à LongueurListe, et d'insérer le nouveau à N.
*Si tu gères les indices suivant et prédécesseur, c'est que les éléments de ta liste sont bien dans le désordre dans le tableau, non ? Donc que tu dois savoir à quelle indice est le premier élément de la liste (donc avoir une variable pour cela) ? Et cet indice n'est pas forcément 1, car tu ne sais pas ce qu'a déjà subi ta liste.Tu as deux manières de gérer ton tableau : en faisant beaucoup de déplacements/recopies, ou pas.* Cas avec beaucoup de recopies. Si tu veux que ton tableau ne contienne pas de "trous", il faut à chaque modification tasser tous les éléments :
- si tu enlèves un élément, il faut tout tasser vers le début du tableau,
- si tu ajoutes un élément, tu le rajoutes au bout de ce qui existe.
* Cas en limitant les déplacements/recopies :
- si tu enlèves un élément, tu mets simplement à jours les champs suivant précédent de ceux qui l'encadrent; voir par précaution (ou pour être utile plus tard quand tu chercheras de la place) tu mets ses champs à jour.
- si tu ajoutes un élément, tu cherches la première place libre, tu l'y mets, et tu mets à jour les champs suivant/précédent pour lui et ceux qui l'encadrent.
Voilà, tout "bêtement".
Partager