List的逆序可以有递归和迭代两种方法, 这两种方法的C++实现如下.
#include <iostream>
struct Node {
    int data;
    Node *next;
};
void printNode(Node *node) {
    Node *p = node;
    while (p != nullptr) {
        std::cout << p->data << ",";
        p = p->next;
    }
    std::cout << "\n";
}
Node * reverseNode(Node *node) {
    Node *next = nullptr;
    Node *prev = nullptr;
    while (node != nullptr) {
        next = node->next;
        node->next = prev;
        prev = node;
        node = next;
    }
    return prev;
}
Node * reverseNodeByRecursion(Node *node) {
    if (node == nullptr || node->next == nullptr) {
        return node;
    }
    Node *head = reverseNodeByRecursion(node->next);
    node->next->next = node;
    node->next = nullptr;
    return head;
};
int main() {
    Node *head = new Node;
    head->data = 0;
    head->next = nullptr;
    Node *p = head;
    for (int i = 1; i < 10; ++i) {
        p->next = new Node;
        p = p->next;
        p->data = i;
        p->next = nullptr;
    }
    printNode(head);
    head = reverseNode(head);
    printNode(head);
    head = reverseNodeByRecursion(head);
    printNode(head);
    std::cout << "Hello, World!" << std::endl;
    return 0;
}