使用迭代器手动反转列表(c ++)

时间:2016-05-13 12:25:27

标签: c++ c++11 iterator

我在c中编写了一个递归函数(有点难看?)来反转单链表。它就像 -

struct node {
    int data; 
    node*next; 
};

node* reverse(node** current, node** newstart) {
    if( (*current) -> next == 0 )   {
        *newstart = *current;    //this is the new starting node
         return *current;
    }
    //as the recursion unwinds, we will get nodes in reverse order
    reverse( &((*current) -> next), newstart )-> next = *current;
    return *current;
}

如何使用迭代器制作类似的东西,像这样 - ?

forward_list<int> :: iterator& reverseList(forward_list<int>& slist, forward_list<int> :: iterator& it) 
{
    if(it == slist.end())   return it;
...
}

我试图查看反向代码,但无法破译它。我知道我可以使用堆栈,或者只是在forward_list上调用reverse,但我想知道我是否可以用迭代器做这些事情? 提前谢谢。

0 个答案:

没有答案