Comment copier une pile?

J'utilise donc une dynamique de la pile et je veux écrire un constructeur de copie, qui a copier la pile de données à partir d'une autre instance de la même classe. Je suis en train d'écrire la fonction, mais il semble assez difficile. Quelqu'un pourrait me donner un coup de main?

template<typename T=int>
class LStack
{
public:

    template<typename U=int>
    struct elem
    {
        U con;
        elem<U>* link;
    }

private:

    elem<T>* el;

    void Copystack(Lstack const& stack)    //HERE
    {
        elem<T>* last = el;
        el->con = stack->con;
        while(stack->link != null)
        {
            var temp = new elem<T>;
            temp->con = stack->con;
            temp->link = stack->link;
            stack = stack->link;
        }
    }

};
  • Cela pourrait être une double question: stackoverflow.com/questions/8948795/... Bonne chance!
  • Êtes-vous essayer de copier les éléments de la première à la dernière, ou de dernier à premier?
  • Il doit être dans le même ordre
  • Aucun rapport avec la question, mais il semble confus que LStack<T>::elem est aussi un modèle. Pourquoi ne pas simplement struct elem { T con; elem* link; };?
  • Vous devez effectuer une itération sur les éléments dans la pile. Dans quelle direction souhaitez-vous effectuer une itération? Vous cherchez à effectuer une itération à partir de la première à la dernière, ou de dernier à premier?