Durchlaufen der Liste der verlinkten Liste

Bin ich irgendwie mit c++ und bekam Kopfschmerzen, die mit diesem Zeiger und so!

Brauche ich für die Iteration über die Liste von struct die verknüpfte Liste, Lesen Sie die Daten des struct und pop, der Eintrag!

diesem mein struct :

struct node {
    map<string,double> candidates;
    double pathCost;
    string source;
    node *next;             //the reference to the next node
};

durch das Lesen diese post ich meine Liste wie :

list<node*> nodeKeeper;

und dann initialisiert der erste Wert:

    node *head;
    head= new node;
    head->pathCost = 0.0;
    head->source="head";
    head->next = NULL; 

dünne füllen die Liste und struct :

for(unsigned int i = 0; i < sourceSentence.size(); i++){

    node *newNode= new node;             //create a temporary node


    //DO STUFF HERE


    //push currunt node to stack
    nodeKeeper.push_back(newNode);

    head = newNode;

}

nun habe ich die Liste von struct und ich will zu Durchlaufen und pop-Elemente:

for (list<node*>::const_iterator it=nodeKeeper.begin();it!=nodeKeeper.end();it++){

    it->pop_front();

}

gibt mir diese Fehlermeldung:

error: request for member 'pop_front' in '*
es.std::_List_const_iterator<_Tp>::operator->()', die der
Zeiger-Typ 'node* const' (vielleicht meintest du mit '->' ?) Hersteller: ***
[main3.o] Fehler 1

Sieht es aus wie, dass mein iterator Punkte in der Liste nicht die Liste selbst!

Können Sie mir sagen, was ist falsch hier?!

  • Warum nicht mit einem list von lists, wenn Sie erlaubt sind zu verwenden, STL?
  • Ja, ich habe auch versucht, die! Ich, wie gesagt, ich bin neu in c++, ich versuche nur alles Lesen
  • wie funktioniert das helfen? Ich muss Zeiger auf den nächsten Knoten!
  • list ist eine doppelt verkettete Liste Struktur. Jedes element hat einen Zeiger auf den nächsten und vorherigen Knoten. Das ist, wie Sie Durchlaufen es.
  • Das ist es, was list für Sie tut. Ich würde entfernen Sie die next Mitglied aus node und ich mit einem list<list<node>> (oder wahrscheinlich ein vector<list<node>>, es sei denn, Sie haben einen Grund zu wählen list)
  • gut zu wissen! Ich würde denken, wie mein problem zu lösen, die durch dieses ! aber haben Sie eine Idee zu diesem problem hier?

InformationsquelleAutor Moj | 2013-02-18
Schreibe einen Kommentar