dsa-practice/libs/chapter2/reverse.cpp

33 lines
536 B
C++

#include "chapter2.hpp"
#include <stack>
/*
Reverse Linked List
*/
void reverse_linkedlist(DopeLinkedList* ll){
DopeNode* node = ll->GetHead();
DopeNode* prev = nullptr;
std::stack<DopeNode*> s;
int iter_cnt = 0;
s.push(node);
while(node->GetNext() != NULL){
s.push(node);
node = node->GetNext();
iter_cnt++;
}
s.push(node);
prev = s.top();
s.pop();
ll->SetHead(prev);
while(!s.empty()){
node = s.top();
s.pop();
prev->SetNext(node);
prev = node;
}
node->SetNext(nullptr);
}