CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Aide] Algorithme liste chainée

darke69
darke69
Niveau 6
05 janvier 2011 à 16:05:42

Bonjour,

j'ai un examen d'algorithme demain matin :peur: en relisant mon cours j'ai l'impression que j'ai mal recopié certains algorithmes traitant des listes chainées (pointeurs).
Je souhaite par exemple écrire un algo qui supprime un élément de la liste chainée à l'emplacement (rang) r qui sera saisi par l'utilisateur. Je me déplace dans la chaine via un pointeur temp1 que j'initialise avec le pointeur de tête. Le pointeur de tête pointant le premier maillon, si je veux supprimer le maillon 3, je dois aller au maillon 2, pour cela je me déplace r-2 fois, pour supprimer le maillon 3 je dois donc me déplacer une fois. temp1 pointe donc sur le maillon 2, je fais pointer temp2 sur le maillon suivant de temp1 qui est le 3. Je fais ensuite pointer temp1 sur le suivant de temp2 (maillon 4). Pour terminer je libère (supprimer de la mémoire) temp2 qui pointe vers le maillon de rang 3 saisi par l'utilisateur.

Cela donne ça :

Algorithme supprimer_element_r;
Type
Personne = ^Maillon;
Maillon = Enregistrement
Nom : chaine;
Suivant : Personne;
fin;
Var
tete, temp1, temp2 : Personne;
i, r : entier
Début
ecrire(‘ entrer le rang de l ’élément à supprimer ’);
lire(r);
temp1 := tete;
Pour i := 1 à r-2 Faire
temp1 := temp^.suivant;
Fin Pour
temp2 := temp1 ^.suivant;
temp1^.suiv := temp2^.suiv;
Libérer(temp2);
Fin

Je cherche juste à savoir si dans la boucle Pour je dois bien mettre r-2 et pas r-1 ou r. Parce que sinon je pense qu'on va aller trop loin dans la liste avec r-1 ou r.

Merci !

tbop2
tbop2
Niveau 10
06 janvier 2011 à 03:09:35

Ton truc ne marche pas si on veut supprimer la tête.

Tous les cas d'élément NULL n'ont pas été traités par ailleurs.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment