Comment modifier une liste liée à la programmation de c

Parce que une liste liée à la programmation C est enchaînés en référençant emplacements de mémoire, l'édition se fait en modifiant ces emplacements de mémoire. Par exemple, si vous souhaitez supprimer le troisième élément de la liste, vous esquiver tout simplement autour d'elle en reliant le deuxième point à la quatrième question. Le troisième point est éliminé efficacement (et perdu) par cette opération.

image0.jpg

De même, vous pouvez insérer un élément dans la liste en modifiant le pointeur suivant de l'élément précédent.

image1.jpg


La meilleure façon de modifier les éléments d'une liste liée est d'avoir un programme interactif qui vous permet de visualiser, d'ajouter, insérer, supprimer et modifier les différentes structures. Un tel programme serait très long et complexe, ce qui explique pourquoi vous verrez qu'il montre dans un programme Linked-Liste Interactive.

UN PROGRAMME INTERACTIF-liste chaînée

/ * Un programme lié-liste interactive * // * Dan Gookin, Commencer à programmer en C For Dummies * / # include #include #include struct typique {int valeur-struct typique * à côté -} - struct typique * première structure typique * courant struct typique * nouveau menu-int (void) -void ajouter (void) montrent -void (void) -void supprimer (void) -struct typique * créer (void) - / * La fonction principale fonctionne avec entrée onlyEverything autre est géré par une fonction * / int main () {int choix = ' 0'- / * obtenir la boucle while pour tourner * / première = NULL-tout (choix =! = {choix menu () Q') - interrupteur (choix) {case 'S': show () - briser cas 'A': ajouter () - briser cas «R»: supprimer () - briser cas 'Q': briser par défaut: percée}} return (0) -} / * Afficher le menu principal et recueillir entrée * / menu int (void) {int ch-printf ("S) comment, A) dd, R) emove, Q) uit:") CH = getchar () - tout (getchar () = ' n'!) / * enlever l'excès d'entrée * / - retour (toupper (ch)) -} / * Ajouter un élément à la fin de la liste chaînée * / add void ( void) {if (première == NULL) / * cas particulier pour le premier article * / {première = create () - Prénom actuelle =} else / * trouver le dernier élément * / {current = premier temps (current- > suivante) / * dernier élément == NULL * / courant = current-> prochaine nouvelle = create () - current-> next = nouveau-/ jour * lien * / courant = nouveau-} printf ("Tapez une valeur: ") -scanf ("% d ", current-> valeur) -current-> prochain = NULL-tout (getchar () = ' n') / * retirer entrée excès * / -!} / * Afficher tous les structures la liste chaînée * / spectacle (void) {int count = 1-si (première == NULL) / * cette liste est vide * / {puts ("Rien à voir") - Retour-} puts ("Afficher tous les records : ") - courant = premier temps (en cours) / * dernier enregistrement == NULL * / {printf (" Record% d:% d n ", comte, current-> valeur) -current = current-> Next- count ++ -}} / * Suppression d'un enregistrement de la liste * / vide delete (void) {struct typique * Précédent- / * sauver record précédent * / int r, c-si (première == NULL) / * vérifier liste vide * / {puts ("No records to remove") - Retour-} puts ("Choisissez un dossier à supprimer:") - show () - printf ("Record:") -scanf ("% d", r) - while (getchar () = ' n'!) / * retirer entrée * / excès - c = 1 = courant de première précédente = null-/ * premier enregistrement n'a pas précédente * / while (c = r!) {if (== actuelle NULL) / * veiller à ce que «r» est à portée * / {puts ("Record not found") - Retour-} précédente = courant-courant = current-> next-c ++ -} if (== précédente NULL) / * cas particulier pour premier enregistrement * / first = current-> côté-else / * Point précédent record à la prochaine * / Précédent-> next = current-> prochaine printf ("Record% d retiré. n", r) exempt (actuelle) - / * libérer de la mémoire * /} / * Créer une structure vide et retourner son adresse * / struct typique * créer (void) {struct typique * aa = (struct typique *) malloc (sizeof (struct typique)) - si (a == NULL) {puts ("Une sorte de malloc () Erreur") - sortie (1) -} return (a) -}

Exercice 1: Si vous avez le temps, tapez le code source du Programme Linked-List Une Interactive dans votre éditeur. Tapant dans vous aide à mieux comprendre le code. Il ya des commentaires inclus pour vous aider à voir ce qui se passe. Construire et exécuter quelques fois pour obtenir le coup de lui.

Soyez conscient que de suppression est un mot-clé C ++ et ne peut pas être utilisé comme un nom fonction (ou variable) lors de la compilation du code C ++.


» » » » Comment modifier une liste liée à la programmation de c