Erste, sorry für mein schlechtes Englisch.Die korrekte Umsetzung der doppelt verknüpften Liste Methoden
ich versuche, eine doppelt verknüpfte Liste zu implementieren, aber ich bin nicht sicher, ob einige seiner Methoden korrekt funktionieren. In der Tat, die clear()
, remove(const short DATA)
- was Entfernt alle Elemente, die zu DATA
, unique()
und reverse()
gleich vergleichen funktioniert nicht korrekt funktionieren. Ich habe kein Buch, Video oder Artikel gefunden, was gut wäre. Ich konnte sie mir in den Weg implementieren, aber ich bleibe auf die formale Art und Weise (Wenn es) und eine erfahrene Person, die Lösung wäre effektiver als meine
void DLList::clear()
{
Node *pCurr = mHead;
while (pCurr != nullptr)
{
mHead = pCurr->mNext;
delete pCurr;
pCurr = mHead;
}
}
void DLList::remove(const short DATA)
{
Node *pCurr = mHead;
while (pCurr != nullptr)
{
if (pCurr->mData == DATA)
{
if (pCurr == mHead)
{
mHead = pCurr->mNext;
delete pCurr;
pCurr = mHead;
}
else
{
Node *pPrev = pCurr->mPrev;
pPrev->mNext = pCurr->mNext;
delete pCurr;
pCurr = pPrev->mNext;
}
}
else
pCurr = pCurr->mNext;
}
}
void DLList::unique()
{
Node *pCurr = mHead;
while (pCurr != nullptr)
{
Node *pNextDistinct = pCurr->mNext;
while (pNextDistinct != nullptr && pNextDistinct->mData == pCurr->mData)
{
pNextDistinct = pNextDistinct->mNext;
delete pCurr->mNext;
pCurr->mNext = pNextDistinct;
pNextDistinct->mPrev = pCurr;
}
pCurr = pNextDistinct;
}
}
void DLList::reverse()
{
Node *pPrev = nullptr;
Node *pCurr = mHead;
while (pCurr != nullptr)
{
pCurr->mPrev = pCurr->mNext;
pCurr->mNext = pPrev;
pPrev = pCurr;
pCurr = pCurr->mPrev;
}
mHead = pPrev;
}
Haben Sie zuerst auf Papier zeichnen eine verknüpfte Liste und was jeder Operation tut? Die Links wären Linien und die Knoten wären Boxen. Das ist das erste, was Sie tun sollten, bevor Sie eine einzelne Codezeile schreiben. Übersetzen Sie dann, um zu kodieren, was Sie auf Papier gezeichnet haben. Wenn etwas schief geht, debuggen Sie Ihren Code, um zu sehen, wo er mit dem übereinstimmt, was Sie auf Papier gezeichnet haben. – PaulMcKenzie
Wenn Sie _ "funktioniert nicht richtig" _ schreiben, sollten Sie auch ** warum ** posten. Was hätte passieren sollen? Was ist stattdessen passiert? –
@PaulMcKenzie Ich habe nichts gezeichnet, aber von nun an werde ich. Danke für den Rat – 0xbaadf00d