链表反转,C++描述

链表反转还是很绕的,对于C++,则纯粹是在玩弄指针,弄清指针和内存的关系很重要。在左侧的是指针,在右侧的是内存。

template <typename T>
struct ListStack;

template <typename T>
struct Node
{
private:
    T item;
    Node *next = nullptr;
    friend class ListStack<T>;
}

template <typename T>
struct ListStack
{
    void reverse()
    {
        Node<T> *reverse = nullptr;
        Node<T> *second = nullptr;

        while (first)
        {
            second = first->next;
            first->next = reverse;
            reverse = first;
            first = second;
        }
        first = reverse;
    }

private:
    Node<T> *first = nullptr;
    unsigned N = 0;
};

上一篇:Unit 22


下一篇:返回值为类的函数,不知道是否为单例模式