我在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,但我想知道我是否可以用迭代器做这些事情? 提前谢谢。