完成reverse

This commit is contained in:
邹晓航
2014-11-27 11:01:21 +08:00
parent cfdb2a34a0
commit 9d6fbceaa9

View File

@@ -149,7 +149,7 @@ namespace TinySTL{
//void sort();
//template <class Compare>
//void sort(Compare comp);
//void reverse();
void reverse();
private:
nodePtr newNode(const T& val = T()){
nodePtr res = nodeAllocator::allocate();
@@ -250,6 +250,21 @@ namespace TinySTL{
void List<T>::clear(){
erase(begin(), end());
}
template<class T>
void List<T>::reverse(){//<2F><><EFBFBD><EFBFBD>β<EFBFBD>
if (empty() || size() == 1) return;
auto curNode = head.p;
head.p = tail.p->prev;
head.p->prev = nullptr;
do{
auto nextNode = curNode->next;
curNode->next = head.p->next;
head.p->next->prev = curNode;
head.p->next = curNode;
curNode->prev = head.p;
curNode = nextNode;
} while (curNode != head.p);
}
}
#endif