C++ 如何使用STL堆栈反转链表?

C++ 如何使用STL堆栈反转链表?,c++,linked-list,stl,stack,reverse,C++,Linked List,Stl,Stack,Reverse,我试着从互联网上寻找解决方案,但找不到 是否可以使用std::stack反转链表?如果是这样,怎么做?当然可以使用堆栈。当您意识到按与推送元素相反的顺序从堆栈中弹出元素时,这种野兽的算法(因为这可能是类工作)实际上非常简单 所以,像这样的东西是你想要的: def reverseList (List<Type> &list): Stack<Type> stack while not list.empty(): #

我试着从互联网上寻找解决方案,但找不到

是否可以使用std::stack反转链表?如果是这样,怎么做?

当然可以使用堆栈。当您意识到按与推送元素相反的顺序从堆栈中弹出元素时,这种野兽的算法(因为这可能是类工作)实际上非常简单

所以,像这样的东西是你想要的:

def reverseList (List<Type> &list):
    Stack<Type> stack
    while not list.empty():                   # 1 2 3 ... 9
        stack.push(list.getAndRemoveFirst())
    while not stack.empty():                  # 9 8 7 ... 1
        list.pushBack(stack.pop())
最后一节展示了如何以相反的顺序遍历列表,如果这就是您需要反转的全部内容。它实际上并不改变列表的顺序,而是允许您向后处理项目

该代码的输出为:

Original list: 9 5 3 5 6 2 9 5 1 4 1 3
Reversed list: 3 1 4 1 5 9 2 6 5 3 5 9

Reverse ITERATOR of
reversed list: 9 5 3 5 6 2 9 5 1 4 1 3

为什么不直接有效地反转它呢?Stack Overflow不是一个教你如何编程的网站。试一试,如果你的代码不起作用,发布代码和你遇到的确切问题,有人可以告诉你如何修复它。另外,要明确一个问题——你似乎在询问如何做的代码以及是否可以使用堆栈。你到底在问什么?我投票把这个问题作为离题题来结束,因为没有人试图解决演示的问题,或者,如果你想让它反向枚举列表,只需使用rbegin和rend成员,然后像往常一样迭代。好的观点,@WhozCraig在答案中添加了这一点。
Original list: 9 5 3 5 6 2 9 5 1 4 1 3
Reversed list: 3 1 4 1 5 9 2 6 5 3 5 9

Reverse ITERATOR of
reversed list: 9 5 3 5 6 2 9 5 1 4 1 3