2017-05-08 4 views
0

ich hier versuchen, die Anzahl des wiederholten Auftretens in verketteten Liste zu zählenZählen Sie die Anzahl des wiederholten Auftretens

so dass, wenn mein Code Anzeige (3 a, 2 c, 1 a) wenn ich bin Fütterung es die Liste a-> a-> a-> c-> c-> eine

 class Node 
     { 
      public: 

      char letter; 
      Node * next; 
      Node(); 
      Node(char); 
     }; 

Unter Verwendung der folgenden Funktion ich die Ereignisse zählen verwaltet, aber nicht so, wie ich gewünscht.

 int Count(Node* h, char searchFor) 
     { 
      int count=0; 
      while(h) 
      { 
       if(h->letter==searchFor) 
        count++; 
       h=h->next; 
      } 

      return count; 
     } 

in der Hauptfunktion

 cout<<"a "<<Count(h, 'a')<<" c "<<Count(h,'c')<<"a "<<Count(h, 'a')<<endl; 

Willen Ausgang (A 3, C 2, a 3), die nicht (a 3, C 2, a 1)

Wie kann ich den Pass Kopf so zu funktionieren, dass es Zählungen aller Knoten mit ähnlichen Zeichen zurückgibt?

+7

Wie beurteilen Sie den zweiten Anruf 'Count erwarten (h,‚a‘)' auf eine andere Antwort auf die erste geben Anruf? Es beginnt am selben Ort und betrachtet dieselben Knoten. –

+0

Related: Denken Sie daran, dass Funktionsargumente nicht in einer bestimmten Reihenfolge vollständig ausgewertet werden müssen. Da die 'operator <<' Implementation effektiv eine Funktion ist, können die drei 'Count()' Aufrufe * in beliebiger Reihenfolge passieren. * Das ist momentan nicht dein Problem, aber es ist möglich, dass dein Fix diese Möglichkeit nicht berücksichtigt. – cdhowie

+0

Sie müssen Logik hinzufügen, so dass count nur eine Antwort größer als null zurückgibt, wenn Sie mindestens 2 aufeinanderfolgende Zeichen erhalten, die mit searchFor identisch sind. – HughB

Antwort

0

Sieht aus wie Sie nicht alle Zeichen zählen wollen, versuchen Sie dies:

int Count(Node* h, char searchFor) 
     { 
      int count=0; 
      while(h) 
      { 
       if(h->letter==searchFor) { 
        ++count; 
       } 
       else if(count > 0) { 
        break; 
       } 
       h=h->next; 
      } 

      return count; 
     } 
Verwandte Themen