2017-06-30 2 views
-2

Ich habe eine einzelne verkettete Liste und funktioniert wie AddNode, , PrintList funktionieren gut, aber ich möchte ein bisschen damit manipulieren.Einzelne verkettete Liste mit mehr Datentypen innerhalb der Struktur

Sagen wir also, meine Struktur ist:

struct node 
{ 
    int data; 
    node* next; 
    bool used; 
} 

Deshalb möchte ich used in allen Knoten true sein. Aber wenn ich einige Knoten löschen möchte, sollte ihre used auf false gesetzt werden. Im Grunde bedeutet "verwendet", dass der Knoten in der Liste ist. Und wenn ich die vollständige Liste drucken möchte, muss ich nur Knoten mit true drucken. Es gibt einen Weg, das zu tun? Oder ist sinnlos?

Ich habe das versucht, aber offensichtlich heißt es, dass die Variable nicht im Rahmen ist. Wie kann ich das tun?

void printList() 
{ 
    curr = head; 
    while(curr != NULL) 
    { 
     if (node->used == true) 
     { 
      cout << curr->data << " "; 
      curr = curr->next; 
     } 
    } 
} 
+1

'node->', was Sie hoffen, hat dies tun würde? Es wird nicht funktionieren, weil 'node' der Name der Klasse ist, keine Instanz davon, aber wenn du erklärst, was es bedeutet, würde das helfen. Meinst du nur 'curr->'? –

+0

Wenn Sie Ihre Bedingung an 'if (curr-> used == true)' fixieren, müssen Sie 'curr = curr-> next;' aus Ihrem if-Block verschieben, sonst haben Sie eine Endlosschleife beim ersten false. – drescherjm

Antwort

0

Sie testen nicht Ihren aktuellen Knotenzeiger im if, und Sie sind an der falschen Stelle auf das nächste Element zu bewegen.

sollte Ihr Code sein:

void printList() 
    { 
     curr = head; 
     while(curr != NULL) 
     { 

      if (curr->used == true) 
      { 
       cout << curr->data << " "; 
      } 

      curr = curr->next; 

     } 

    }