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 simplementstruct 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?
Vous devez vous connecter pour publier un commentaire.
Le conteneur STL adaptateur
std::stack
a une affectationoperator=
, qui permet de faire exactement ce queSi vous avez besoin de le faire manuellement, vous pouvez utiliser @FredOverflow la solution récursive, ou vous pourriez le faire avec deux boucles et temporaire de la Pile, ce qui le recurisve version conserve sur le frame de pile (pun intended).