How to reverse a doubly linked list in c++ using setters, getters

Viewed 34

I'm having trouble feeding in data and seeing if my code is working correctly. I am trying to code a reverse-linked list function using pointers, setters, and getters.

The trouble is that when I run my code, it breaks. Or, the display list doesn't work at all. Is my reverse syntax correct?

Here's my reverse function I want to highlight:

template<class ItemType>
void LinkedList<ItemType>::reverse()
{
   Node<ItemType>* curPtr = headPtr;
   Node<ItemType>* temp = NULL;

  while(curPtr != NULL)
  {
      curPtr->setPrev(temp);
      curPtr->setPrev(curPtr->getNext());
      curPtr->setNext(temp);
      curPtr->setPrev(curPtr->getPrev());
  }
}

Here's my tester + displayList + main:

void displayList(ListInterface<string>* listPtr)
{
    cout << "The list contains " << endl;
   for (int pos = 1; pos <= listPtr->getLength(); pos++)
   {
      cout << listPtr->getEntry(pos) << " ";
   } // end for
    cout << endl << endl;
}  // end displayList
void reverseListTester()
{
   ListInterface<string>* reverseListPtr = new LinkedList<string>();

   string data[] = {"one", "two", "three", "four", "five", "six"};
   
   for (int i = 0; i < 6; i++)
   {
        if (reverseListPtr->insert(i + 1, data[i]))
      {
         cout << "Inserted " << reverseListPtr->getEntry(i + 1)
         << " at position " << (i + 1) << endl;
      }
      else
      {
         cout << "Cannot insert " << data[i] << " at position " << (i + 1)
         << endl;
      }
    }  // end for
   reverseListPtr->reverse();
   displayList(reverseListPtr);
}
int main()
{
   // listTester();
   reverseListTester();
   return 0;
}  // end main

0 Answers
Related