Comment créer dynamiquement de nouveaux nœuds dans les listes chaînées en C++

Quelqu'un pourrait-il me dire si c'est l'idée de base de listes liées? Quels sont les avantages et les inconvénients de cette méthode et quelles sont les meilleures pratiques lors de la mise en œuvre de listes chaînées en C++? Im nouveau à des structures de données, de sorte que c'est ma première approche. Si il ya une meilleure façon de faire la même chose, s'il vous plaît laissez-moi savoir. En outre, comment voulez-vous créer les nœuds de manière dynamique, sans codage en dur elle? Merci.

#include <iostream>
#include <string>

using namespace std;
struct node {
    int x;
    node *next;
};

int main()
{

    node *head;
    node *traverser;


    node *n = new node;                 //Create first node
    node *t = new node;                 //create second node

    head =n;                            //set head  node as the first node in out list.
    traverser = head;                   //we will first begin at the head node.

    n->x = 12;                          //set date  of first node.
    n->next = t;                        //Create a link to the next node

    t->x = 35;                          //define date  of second node.

    t->next = 0;                        //set pointer to null if this is the last node in the list.


    if ( traverser != 0 ) {                 //Makes sure there is a place to start
        while ( traverser->next != 0 ) {
            cout<< traverser->x;            //print out first data member
            traverser = traverser->next;    //move to next node
            cout<< traverser->x;            //print out second data member

        }
    }
    traverser->next = new node;  //Creates a node at the end of the list
    traverser = traverser->next; //Points to that node
    traverser->next = 0;         //Prevents it from going any further
    traverser->x = 42;
}
  • Depuis liés liste des opérations sont délicates à obtenir le droit, vous seriez beaucoup mieux, en les définissant comme réutilisable méthodes au sein de votre liste liée de classe, plutôt que d'essayer de faire les bonnes choses à faire manuellement à chaque fois que vous les utilisez. De cette façon, vous n'avez qu'à obtenir le fonctionnement correct une fois, plutôt que de dizaines/centaines de fois 🙂
  • La façon dont vous avez l'impression de la liste semble étrange. Pourquoi ne pas faire while (traverser->next) { cout << traverser->x; traverser = traverser->next; }?
  • A voté pour les fermer comme trop large. Cette demande d'un tutoriel ou d'un livre.
InformationsquelleAutor chancify | 2015-01-02