Les partenaires publicitaires:

Comment créer une liste liée au c

En C, une liste chaînée vous permet de créer une liste sans décider à l'avance combien de temps il pourrait être, et sans perdre la mémoire par des éléments que vous ne avez pas encore allouer. L'inconvénient est que vous avez à faire tout le travail d'organisation et de gestion de la liste dans la mémoire.

Créer la structure de données

  1. Choisir un nom, puis utiliser typedef pour le définir. Chaque liste chaînée aura besoin d'une structure, même si elle a une seule variable:

    typedef struct product_data PRODUCT_DATA-

  2. Définir la structure. Le dernier élément doit être un pointeur sur le type que vous venez de définir, et nommé "Suivant":

    struct product_data {
    int product_code-
    int product_size-
    PRODUCT_DATA * de prochaine
    } -

  3. Allouer deux pointeurs à cette structure de données, de les initialiser à NULL, pour être la liste "tête" et "queue":

    PRODUCT_DATA products_head = null-
    PRODUCT_DATA
    products_tail = null-

Ajouter à la liste

  1. Allouer une variable temporaire qui est un pointeur vers la structure de données:

    PRODUCT_DATA * newproduct-

  2. Utilisez malloc () pour créer un nouvel élément, vérifiant toujours pour une erreur:

    if ((newproduct = malloc (sizeof (PRODUCT_DATA))) == NULL) {abort () -}

  3. Remplissez les champs du nouvel élément. Définissez sa "Suivant" champ à NULL:


    newproduct-gt; product_code = newcode-
    newproduct-gt; product_size = newsize-
    newproduct-gt; = null-côté

  4. Définissez la variable de la tête. Si la variable de la tête est NULL, ceci est le premier élément ajouté à la liste, donc définir la variable de la tête pour pointer vers elle:

    if (! products_head) products_head = newproduct-

  5. Préparez-vous à une autre variable. Dans d'autres cas, la queue variable pointe sur le dernier élément de la liste, de sorte mis sa prochaine valeur pour pointer vers le nouvel élément:

    d'autre products_tail-gt; next = newproduct-

  6. Mettre à jour la queue pour pointer vers le nouvel élément dernier, dans les deux cas:

    products_tail = newproduct-

Accéder à la liste




  1. Créez un autre pointage variable temporaire à la structure de données:

    PRODUCT_DATA * par produit

  2. Réglez votre variable temporaire à la variable de la tête:

    produit = products_head-

  3. Boucle à travers les éléments, en vérifiant chacun, puis en définissant la variable temporaire à l'autre pointeur de traverser à la suivante:

    while (produit) {if (produit-gt; product_code = 15!) {produit = produit gt; de prochaine}}

  4. Vérifiez si la variable est NULL. Si oui, vous jamais trouvé l'article:

    if (! produit) retour 0-
    . Sinon, il pointe vers l'élément que vous recherchez:
    retour produit gt; product_size-

Nettoyez votre travail

  1. Libère la liste lorsque votre programme se termine, comme tous les systèmes ne fonctionnent pas se chargera automatiquement.

  2. Boucle tant que la variable de la tête ne sont pas NULL:

    while (products_head) {

  3. Stocker sa prochaine pointeur dans la variable queue temporairement:

     products_tail = products_head-gt; de prochaine

  4. Libère l'élément:

     libre (products_head) -

  5. Réglez le pointeur de tête pour le pointeur que vous avez enregistré à l'étape 4:

     products_head = products_tail-
    }

Conseils & Avertissements

  • Il est une bonne idée pour créer une fonction de C à ajouter à la liste chaînée, alors toujours utiliser au lieu de le faire directement.
  • "Listes doublement chaînées" faire des suppressions et des recherches plus efficaces en utilisant un "précédent" pointeur avec le "Suivant" pointeur, mais ils font ajoute moins efficace.
  • Suppression de la liste est similaire à l'ajout à elle, mais vous aurez besoin de trouver son prédécesseur et changer sa prochaine pointeur vers pointeur suivant de l'élément supprimé, en contournant, avant de désaffecter il. Suppression des premiers ou les derniers éléments, il faudra mettre à jour les variables de la tête ou de la queue à la place.
  • Il est possible de trier une liste liée C, et il peut être très efficace de le faire, car il est uniquement des pointeurs, pas de données réelles, que vous devez déplacer et copier. Cependant, il est un algorithme complexe.
» » » » Comment créer une liste liée au c