Funcion clonar

Iniciado por rvilla777, 2 Mayo 2010, 19:21 PM

0 Miembros y 1 Visitante están viendo este tema.

rvilla777

Hola tengo una duda sobre pilas dinamicas, debo crear un funcion clonar para una pila, pero no tengo idea como se puede realizar dicha funcion?, me orientan ? gracias.

biribau

Una implementación muy sencilla, pero poco astuta(naive, ingenua) es sacar cada elemento, y pushearlo en otra pila, así le darás la vuelta a la pila.
Después sacas otra vez cada elemento de la nueva pila y pusheas el elemento en 2 pilas nuevas. Supongo que te refieres a pilas LIFO, con FIFO funcionaría pero podría eliminarse el primer bucle, o sea, tal como está vale para ambas.

PILA pila_auxiliar = PILA();
PILA pila_copia = PILA();
while(!pila.esVacia()) {
      void *elemento = pila.pop();
      pila_auxiliar.push(elemento);
}
while(!pila_auxiliar.esVacia()) {
      void *elemento = pila_auxiliar.pop();
      pila.push(elemento);
      pila_copia.push(elemento);
}

Gallu

No sería mejor utilizar un vector para guardar los datos de la pila que se quiere clonar y luego rellenar la nueva pila con la info del vector pero en el orden inverso en que se fue almacenando ?
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.

biribau

Bueno, más o menos es lo mismo, como no dijo nada de las operaciones de su pila, planteé una solución con el minimo de operaciones que una pila tiene para poder llamarse pila: push, pop, y constructor. Sólo que el vector que tú usarías es mi pila auxiliar

Gallu

Bueno , como tú mismo dijiste , utilizar una pila auxiliar es una manera "poco astuta" de hacerlo ...! ::)
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.