// Una lista simple: insertar y sacar por el inicio, y llegar al elemento i.
#include <cstddef>
#include <iostream>
#include <string>

#include "slist.h"

namespace {

void print(SinglyList<std::string>& list) {
    std::cout << "[";
    for (std::size_t i = 0; i < list.size(); i++) {
        std::cout << (i == 0 ? "" : " ") << list.at(i);
    }
    std::cout << "] tamaño " << list.size() << "\n";
}

}  // namespace

int main() {
    SinglyList<std::string> list;
    list.push_front("lima");
    list.push_front("cusco");
    list.push_front("puno");
    print(list);

    list.pop_front();
    print(list);

    list.push_back("tacna");
    print(list);
    list.check_invariants();

    std::cout << "at(2) = " << list.at(2) << "\n";
    return 0;
}
