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 ;}