Accueil Finances personnelles Comment créer une liste chaînée en programmation C - des nuls

Comment créer une liste chaînée en programmation C - des nuls

Vidéo: Langage C #19 - listes 2024

Vidéo: Langage C #19 - listes 2024
Anonim

Dans la programmation C, si vous voulez ajouter une deuxième structure au code que vous avez déjà créé, créez une liste chaînée - une série de structures qui contiennent des pointeurs les uns aux autres. Avec les données de base dans une structure, la structure contient un pointeur, qui contient l'adresse de la structure suivante dans la liste.

Avec une jonglerie astucieuse de noms de pointeurs, plus une valeur NULL pour plafonner la fin de la liste, vous pourriez vous retrouver avec quelque chose de similaire au code source dans Un exemple de liste chaînée primitive.

EXEMPLE DE LIAISON PRIMITIVE

#include #include #include int main () {struct stock {char symbol [5]; quantité int; prix flottant; struct stock * suivant;}; struct stock * d'abord; struct stock * courant; struct stock * nouveau; / * Crée une structure en mémoire * / first = (structure stock *) malloc (tailleof (struct stock)); if (first == NULL) {puts ("Une sorte d'erreur malloc ()"); exit (1);} / * Attribue des données de structure * / current = first; strcpy (symbole courant->, "GOOG"); courant-> quantité = 100; current-> prix = 801. 19; current-> next = NULL; nouveau = (struct stock *) malloc (sizeof (struct stock)); if (new == NULL) {puts ("Une autre erreur malloc ()"); exit (1);} current-> next = nouveau; courant = nouveau; strcpy (symbole courant-> "MSFT"); courant-> quantité = 100; courant-> prix = 28. 77; current-> next = NULL; / * Afficher la base de données * / puts ("portefeuille de placement"); printf ("SymboltSharestPricetValuen"); courant = premier; printf ("% - 6st% 5dt%. 2ft%. 2fn", courant-> symbole, courant-> quantité, courant-> prix, courant-> quantité * courant-> prix); courant = courant-> suivant; printf ("% - 6st% 5dt%. 2ft%. 2fn", courant-> symbole, courant-> quantité, courant-> prix, courant-> quantité * courant-> prix); return (0);}

Ce code source est assez long, mais il crée simplement une seconde structure, liée au premier. Ne laissez pas la longueur du code source vous intimider.

Les lignes 13 à 15 déclarent les trois pointeurs de structure standard requis pour une danse en liste chaînée. Traditionnellement, ils sont nommés en premier, actuel et nouveau. Ils jouent dans le quatrième membre de la structure, ensuite, trouvé à la ligne 11, qui est un pointeur de structure.

N'utilisez pas typedef pour définir une nouvelle variable de structure lors de la création d'une liste liée. Un exemple de liste liée primitive n'utilise pas typedef, donc ce n'est pas un problème avec le code, mais de nombreux programmeurs C utilisent typedef avec des structures. Faites attention!

Le nom de la variable new, utilisé à la ligne 15, est un mot réservé en C ++, donc si vous voulez être bilingue, changez le nom de la variable en new_struct ou autre chose que le mot new.

Lorsque la première structure est remplie, la ligne 30 attribue un pointeur NULL à l'élément suivant.Cette valeur NULL limite la fin de la liste liée.

La ligne 32 crée une structure en plaçant son adresse dans la nouvelle variable de pointeur. L'adresse est sauvegardée dans la première structure de la ligne 38. C'est ainsi que l'emplacement de la seconde structure est conservé.

Les lignes 40 à 43 remplissent les informations du second pointeur, en affectant une valeur NULL à l'élément suivant à la ligne 43.

La liaison a lieu lorsque le contenu des structures est affiché. La ligne 48 capture l'adresse de la première structure. Ensuite, la ligne 54 capture l'adresse de la structure suivante à partir de la première structure.

Exercice 1 : Tapez le code source de A Primitive Linked-List Example dans votre éditeur. Même si c'est long, tapez-le, car vous devrez le modifier plus tard (si vous n'êtes pas habitué à cela maintenant). Construire et courir.

Contrairement aux tableaux, les structures d'une liste liée ne sont pas numérotées. Au lieu de cela, chaque structure est liée à la structure suivante de la liste. Tant que vous connaissez l'adresse de la première structure, vous pouvez parcourir la liste jusqu'à la fin, qui est marquée par une valeur NULL.

Un exemple de liste de liens primitifs montre un code source mal fait avec beaucoup de code répété. Lorsque vous voyez plusieurs instructions comme celle-ci dans votre code, vous devriez immédiatement penser à "fonctions". "

UN EXEMPLE DE LIAISON MEILLEURE

#include #include #include #define ITEMS 5 struct stock {char symbol [5]; quantité int; prix flottant; struct stock * suivant;}; struct stock * d'abord; struct stock * courant; struct stock * nouveau; struct stock * make_structure (vide); void fill_structure (struct stock * a, int c); void show_structure (struct stock * a); int main () {int x; pour (x = 0; xnext = nouveau; current = new;} fill_structure (current, x + 1);} current-> next = NULL; / * Afficher la base de données * / puts ("Investment Portfolio"); printf ("SymboltSharestPricetValuen "); current = first; while (courant) {show_structure (courant); current = current-> next;} retour (0); struct struct * make_structure (vide) {struct stock * a; a = (struct stock *) malloc (sizeof (struct stock)); if (a == NULL) {puts ("Une sorte d'erreur malloc ()"); exit (1);} return (a);} void fill_structure (struct stock * a, int c) {printf ("Elément #% d /% d: n", c, ITEMS); printf ("Symbole de stock:"); scanf ("% s", a-> symbole); printf ("Nombre des partages: "); scanf ("% d ", & a-> quantité); printf (" Prix de l'action: "); scanf ("% f ", & a-> prix);} void show_structure (struct stock * a) {printf ("% - 6st% 5dt%. 2ft%. 2fn", a-> symbole, a-> quantité, a-> prix, a-> quantité * a-> prix);}

Listes les plus proches sont créés comme indiqué dans Un meilleur exemple de liste liée.La clé consiste à utiliser trois variables de structure, illustrées dans les lignes 13 à 15:

  • contient toujours l'adresse de la première structure de la liste. Toujours.

  • current contient l'adresse de la structure en cours de traitement, remplie de données ou affichée.

  • new est l'adresse d'une nouvelle structure créée en utilisant la fonction malloc ().

La ligne 7 déclare la structure de stock comme globale. De cette façon, il peut être consulté à partir des différentes fonctions.

La boucle for entre les lignes 25 et 39 crée de nouvelles structures, les reliant entre elles.La structure initiale est spéciale, donc son adresse est enregistrée dans la ligne 30. Sinon, une nouvelle structure est allouée, grâce à la fonction make_structure ().

À la ligne 35, la structure précédente est mise à jour; la valeur du courant n'est pas changée jusqu'à la ligne 36. Avant cela, le pointeur de la structure actuelle est mis à jour avec l'adresse de la structure suivante, nouvelle.

Sur la ligne 40, la fin de la liste chaînée est marquée en réinitialisant le nouveau pointeur de la dernière structure à une valeur NULL.

La boucle while de la ligne 46 affiche toutes les structures de la liste chaînée. La condition de la boucle est la valeur du pointeur actuel. Lorsque la valeur NULL est rencontrée, la boucle s'arrête.

Le reste du code affiché dans Un meilleur exemple de liste chaînée se compose de fonctions qui s'expliquent d'elles-mêmes.

Exercice 2 : Copiez le code d'un meilleur exemple de liste liée dans l'éditeur. Construire et courir.

Prenez note des instructions scanf () dans la fonction fill_structure (). Rappelez-vous que le symbole -> est la notation "peeker" pour un pointeur. Pour obtenir l'adresse, vous devez préfixer la variable avec un & dans la fonction scanf ().

Comment créer une liste chaînée en programmation C - des nuls

Le choix des éditeurs

Utilisant le mode rafale: La photographie d'action des mannequins

Utilisant le mode rafale: La photographie d'action des mannequins

Canon EOS Rebel T1i / 500D nécessite un vitesse d'obturation rapide - et un doigt de déclenchement rapide. Heureusement, le Canon EOS Digital Rebel a un mode Drive (ou Burst), qui enregistre une série continue d'images tant que vous maintenez le bouton de l'obturateur enfoncé. Si vous voulez obtenir de superbes photos d'un sujet en mouvement rapide, le mode Drive ...

En utilisant le mode en direct (détection de visage) sur votre Canon EOS Rebel T6 / 1300

En utilisant le mode en direct (détection de visage) sur votre Canon EOS Rebel T6 / 1300

Lorsque vous activez ce mode, le Rebel T6 recherche les visages dans le cadre. Vous devrez peut-être appuyer brièvement sur le déclencheur pour réactiver l'appareil photo avant que la fonction de détection de visage ne s'enclenche. Si un visage est détecté, l'appareil photo affiche un cadre de mise au point sur le visage, comme indiqué sur ...

En utilisant les modes automatiques sur votre Canon EOS Rebel T3 / 1100D - mannequins

En utilisant les modes automatiques sur votre Canon EOS Rebel T3 / 1100D - mannequins

Pour le plus automatique de la photographie automatique, permettant aux personnes ayant une expérience minimale de capturer de belles images, réglez votre sélecteur de mode Canon EOS Rebel T3 / 1100D sur l'un des deux paramètres suivants: Auto complet: Le nom de ce mode, indiqué dans la figure suivante, indique que le l'appareil photo prend le contrôle total de toutes les expositions, luminosité, flash, ...

Le choix des éditeurs

5 Bons contrôles comptables qui minimisent le vol - les nuls

5 Bons contrôles comptables qui minimisent le vol - les nuls

Voici un résumé de cinq techniques puissantes pour minimiser les problèmes surgissez lorsque vous avez des personnes ayant des niveaux de compétence et de fiabilité différents qui travaillent avec vos données QuickBooks: Comparez régulièrement les inventaires physiques avec les enregistrements de comptabilité d'inventaire. Une des choses que vous pouvez faire, à la fois pour minimiser vos pertes d'inventaire et ...

6 Astuces pour utiliser la stratégie avec QuickBooks - les nuls

6 Astuces pour utiliser la stratégie avec QuickBooks - les nuls

Si vous utilisez QuickBooks pour vous aider à mettre en place une stratégie pratique, il y a quelques choses que vous pourriez vouloir considérer. Assurez-vous de bien comprendre ces points clés: Connaissez les trois stratégies. Habituellement, une entreprise ne peut avoir qu'une stratégie commerciale sur trois: Stratégie basée sur les coûts Stratégie basée sur la différenciation Stratégie axée sur les objectifs Choisissez une stratégie. ...

5 Astuces pour simplifier l'installation de QuickBooks 2014 - les nuls

5 Astuces pour simplifier l'installation de QuickBooks 2014 - les nuls

Si vous êtes une petite entreprise configurant QuickBooks Logiciel de comptabilité 2014, vous apprécierez ces cinq conseils utiles. Minimisez le processus d'installation de QuickBooks avec ces astuces et techniques, et vous obtiendrez une conclusion rapide et réussie. Astuce # 1 de QuickBooks: Convertir en QuickBooks à compter du 1er janvier Convertir en un nouveau système de comptabilité dès le début ...

Le choix des éditeurs

Logique Puzzles pour garder votre esprit net - les mannequins

Logique Puzzles pour garder votre esprit net - les mannequins

Mettent votre casse-tête pour résoudre ces énigmes logiques! Chacun a juste une réponse. Les niveaux sont faciles, délicats, durs et traîtres, «facile» étant (bien sûr) les puzzles les plus faciles, et «traître» étant les plus difficiles. Facile: Combien de fois un mathématicien peut-il soustraire dix de 100? Facile: Déchiffrez cet indice: YYYMEN Tricky: Une femme ...

Maintien de la stabilité de l'humeur dans les troubles bipolaires - mannequins

Maintien de la stabilité de l'humeur dans les troubles bipolaires - mannequins

Plan thérapeutique global qu'une personne atteinte de trouble bipolaire doit suivre et maintenir la stabilité de l'humeur est assez simple. Suivez ce plan de traitement: Prenez vos médicaments tels que prescrits, même lorsque vous vous sentez bien, et consultez votre médecin avant de faire des changements de médicaments. Établir des routines qui assurent un horaire régulier de veille-sommeil. Manque de qualité ...

Faire un pré-accord pour recevoir un traitement pour trouble bipolaire - les variables nominales

Faire un pré-accord pour recevoir un traitement pour trouble bipolaire - les variables nominales

En pleine Manie ou dépression, une personne peut ne pas penser assez clairement pour se faire soigner et peut même refuser le traitement nécessaire. Les êtres chers veulent faire ce qu'il y a de mieux, mais ils hésitent souvent, ne sachant pas quand intervenir et quoi faire. Devraient-ils appeler votre médecin ou votre thérapeute ou vous conduire?