Ich habe eine Datenbeutel Struktur erstellt. Ich lese den Text einer Datei und konvertiere in lexikografische Reihenfolge. Um dies zu tun, muss ich zwei Zeichenfolgen in Kleinbuchstaben umwandeln, um sie zu vergleichen (Eins für den aktuellen Knoten und eins für den Knoten, der daneben steht). Aber mein Problem ist, wenn ich große Textdateien habe, muss es die Zeichenfolge in Kleinbuchstaben für jeden Knoten konvertieren, den ich einfügen und manchmal dauert es eine lange Zeit zu verarbeiten. Ich habe mich gefragt, ob es bessere Möglichkeiten gibt, dies anzupassen, um die Spielzeit zu erhöhen.Debug-Zeit Ausgabe
void insert(string v)
{
if(head == NULL){ //empty list
head = new BagNode;
head->dataValue = v;
//head->dataCount = 0;
head->next = NULL;
}
else
{
BagNode * n = new BagNode; // new node
n->dataValue = v;
BagNode * current = head; //for traversal
//current = head;
n->dataCount = 0;
if(!isBefore(current->dataValue, v)) //new head
{
n->next = head;
head = n;
}
else{ //mid and tail insert
while(current->next && isBefore(current->next->dataValue,v))
{
current = current->next;
}
n->next = current->next;
current->next = n;
}
}
}
vergleichen die beiden Knoten
bool isBefore(string a, string b)
{
transform(a.begin(), a.end(), a.begin(), ::tolower);
transform(b.begin(), b.end(), b.begin(), ::tolower);
if(a == b) {
return true;
}
else {
return false;
}
}
Behalten Sie in einem Knoten sowohl die ursprüngliche als auch die konvertierte Zeichenfolge bei. Die erste für Anwendungszwecke, die zweite nur für Vergleiche. Gehen Sie beim Einfügen wie folgt vor: Einmal konvertieren, nach dem richtigen Ort suchen, Original einfügen und konvertieren. Sie werden wie üblich Raum für Zeit tauschen. – GMichael
'NULL' ist für C99. Verwenden Sie 'nullptr' in C++ 11. BTW sollten Sie C++ [Standardcontainer] (http://en.cppreference.com/w/cpp/container) & [Smartpointer] (http://en.cppreference.com/w/cpp/memory) –
auch verwenden Kompiliere mit allen Warnungen und Debug-Informationen ('g ++ -Wall -g' wenn [GCC] (http://gcc.gnu.org/) ....) und verwende den Debugger (' gdb') & [valgrind] (http://valgrind.org/) –