#include <iostream>
#include <list>
#include <algorithm>

using namespace std;

template <typename T>
void print(const list<T> &lst)
{
    for (typename list<T>::const_iterator it = lst.begin(); it != lst.end(); ++it)
        cout << *it << ' ';
    cout << endl;
}

int main()
{
    string s = "abcdefg";

    // 将 string 字符串转换为 list
    list<char> l(s.begin(), s.end());
    int size = l.size(); // 获取大小
    print(l);

    // list 手写逆序
    list<char>::iterator it = l.begin(); // 迭代器指向第一个元素
    for (int i = 0; i < size; i++)       // 逆序 size 次
    {
        it = l.insert(it, l.back()); // 将最后一个元素插入到第一个元素之前
        it++;                        // 迭代器指向下一个元素
        l.pop_back();                // 删除最后一个元素
    }

    print(l);

    return 0;
}
