Encontré un ejercicio resuelto donde se usan pilas y listas que me generó dudas, es este:
Impleméntese el método no recursivo de la clase
dll_t ostream& write_reverse (dll_node_t<T>* n, ostream& os) const
que muestra en orden inverso el contenido de la lista enlazada invocante a partir del nodo n con ayuda de una pila que almacene punteros de nodos. Sólo se podrá utilizar el métododll_node_t* get_next()
de la clasedll_node_t
para acceder al elemento siguiente. En ningún caso se permitirá utilizar el métododll_node_t* get_prev()
.
El ejercicio resuelto:
template <class T> ostream& dll_t<T>::write_reverse2(dll_node_t<T>* n, ostream& os) const { stack_v_t<dll_node_t<T>*> stack; while (n != NULL) { stack.push_back(n); n = n->get_next(); } while(!stack.empty()){ stack.top()->write(os); stack.pop(); } return os; } template <class T> ostream& dll_t<T>::write_reverse2(ostream& os) const { reverse2(head_, os); return os; }
la clase pila de la que hace uso:
template <class T>class stack_v_t{private:vector_t<T> v_;int top_;public:stack_v_t(int max_sz);~stack_v_t(void);bool empty(void);T top(void);void pop(void);void push(T dato);};
Mi duda: Al crear la pila, ¿no debería tener un tamaño fijo, no le da un tamaño, tendría que tenerlo no?