template <typename T>
struct Node
{
    T data;
    Node* next;
};

template <typename T>
void push(Node<T>** head, T data)
{
    Node<T>* tmp = *head;
    Node<T>* newNode = nullptr; //createNode(data);

    if (tmp == nullptr)
    {
        *head = newNode;
    }
    else
    {
        while (tmp->next)
            tmp=tmp->next;

        tmp->next = newNode;
    }
}


int main(int argc, const char * argv[])
{
    Node<float>* head1 = nullptr;
    push(&head1, 1.0f);

    Node<int>* head = nullptr;
    push(&head, 1);

    return 0;
}