En C, une liste chaînée vous permet de créer une liste sans en décider à l'avance combien de temps il pourrait être , et sans perdre de mémoire par des éléments allocation vous n'avez pas encore . L'inconvénient est que vous avez à faire tout le travail d'organisation et de gestion de la liste en mémoire. Instructions Créer la structure de données 1 Choisissez un nom, puis utiliser typedef à définir. Chaque liste chaînée aura besoin d'une structure , même si elle ne dispose que d' une seule variable : typedef struct product_data PRODUCT_DATA ; Page 2 définir la structure . Le dernier élément doit être un pointeur vers le type que vous venez de définir , et nommé "next" : struct {int product_data product_code ; int product_size ; PRODUCT_DATA * suivant ;} ; 3 Allouer deux pointeurs vers cette structure de données , l'initialisation à NULL, comme la liste «tête» et «queue» : PRODUCT_DATA * products_head = NULL; PRODUCT_DATA * products_tail = NULL; Ajouter à la liste < br > Hôtels 4 Affecter une variable temporaire qui est un pointeur vers la structure de données : PRODUCT_DATA * newproduct ; 5 utilisation malloc () pour créer un nouvel élément , toujours vérifier en cas d'erreur : if (( newproduct = malloc ( sizeof ( PRODUCT_DATA ))) == NULL ) { abort () ; } 6 Remplir les champs du nouvel élément . Définissez son champ "Suivant" pour NULL : newproduct -> product_code = Code alternatif ; newproduct -> product_size = NewSize ; newproduct - > suivant = NULL; 7 Définissez la variable de la tête . Si la variable de tête est NULL, c'est le premier élément ajouté à la liste, définissez la variable pour pointer vers elle la tête : si products_head = newproduct ; 8 Préparez-vous à une autre ( products_head !) variable. Dans d'autres cas , la queue variable pointe vers le dernier élément de la liste , de sorte mis sa prochaine valeur pour pointer vers le nouvel élément: autre products_tail - > suivant = newproduct ; 9 Mise à jour de la queue pointer vers le nouveau dernier élément , dans les deux cas : products_tail = newproduct ; accéder à la liste 10 Créer une autre variable temporaire pointant vers la structure de données : * PRODUCT_DATA produit ; 11 définir la variable temporaire à la variable de la tête : produit = products_head ; 12 boucle à travers les éléments , vérifier chacun , puis en définissant la variable temporaire à l' prochaine pointeur de traverser à la suivante : alors que ( produit ) { if (! produit -> product_code = 15) { produit = produit - > suivant ;}} 13 Vérifier si la variable est NULL . Si c'est le cas , vous n'avez jamais trouvé l'article : si return 0; ( produit ) . Sinon, il pointe l'élément que vous recherchez : retour produit -> product_size ; Nettoyez votre travail 14 DEALLOCATE la liste lorsque votre programme se termine , comme tous les systèmes d'exploitation ne se chargera automatiquement cette 15 boucle tant que la variable de la tête n'est pas NULL : . while ( products_head ) { 16 magasin de sa prochaine pointeur dans la variable de queue temporaire : products_tail = products_head - > suivant ; 17 DEALLOCATE l'élément : gratuit ( products_head ) ; 18 Placez le pointeur de la tête du pointeur que vous avez enregistré à l'étape 4 : products_head = products_tail ;}
|