Universidad Nacional de Colombia Examen Final de Estructuras de Información. 2006-1. Grupo 6. Fecha: 6/Jul/2006 1. Empleando la plantilla de clase parejaa presentada template <class T1, class T2> se desea que el siguiente código funcione e imprima class pareja { (5,x): public: T1 primero; T2 segundo; pareja():primero(),segundo() {} int main() { pareja(const T1 &a, const T2 &b): pareja<int,char> p; primero(a), segundo(b) {} p=hacer_pareja<int,char>(5,'x'); pareja<T1,T2> &operator=(const cout<<p; pareja<T1, T2> &p) { } primero=p.primero; segundo=p.segundo; a) Implemente la plantilla de función hacer_pareja return (*this); (análoga a la función de STL make_pair). } b) Sobrecargue el operador << para que opere obje}; tos de la clase pareja template <class T> stack<T> op(const stack<T> &s) 2. ¾Qué imprime el siguiente programa que emplea plan{ tillas mostradas a la izquierda? priority_queue<T> q; stack<T> t=s; int main() { while (!t.empty()) { stack<double> s; q.push(t.top()); s.push(10.0); s.push(3.2); t.pop(); s.push(-5.1); s.push(4.0); } stack<double> r=op<double>(s); stack<T> r; cout<<r; while (!q.empty()) { } r.push(q.top()); q.pop(); 3. Un montículo por mayores es análogo al montículo es} tudiado en clase, pero mantiene el máximo elemento return r; } en la raíz y los menores en las hojasb . En un montículo template <class T> por mayores inicialmente vacío se insertan consecutistd::ostream &operator<<( vamente los elementos 4.0, -5.1, 3.2, 10, 2, dibuje el std::ostream &os, montículo resultante tras cada inserción const stack<T> &s) { 4. Complete la plantilla de clase NodoArbin con el méstack<T> t=s; todo bool esAVL() que retorne verdadero si y solo string ant(""); sí el árbol es AVL (implemente también los métodos os<<"< "; auxiliares que requiera). while (!t.empty()) { os<<ant<<t.top(); 5. La plantilla de clase Grafo<T,E> adjunta implemenant=", "; ta un grafo dirigido con etiquetas (los nodos están t.pop(); indexados y tienen datos diferentes de tipo T; los ar} cos tienen etiquetas de tipo E). Complete el método os<<" |"; bool esCircuito(list<int>vertices) que retorna return os; verdadero si y sólo si los índices de vertices que recibe } conforman un circuito. Es decir si hay arco entre el template <class T> primero y el segundo, si hay arco entre el segundo y el class NodoArbin { tercero, ... si hay arco entre el penúltimo y el último public: T dato; NodoArbin<T> *izq, *der; y si hay arco entre el último y el primero. NodoArbin(T d) : dato(d), a Es análoga a la clase pair estándar de STL e implementada en izq(NULL), utility. der(NULL) {} b En cierta implementación de STL el adaptador priority_queue } está implementado sobre un montículo por mayores. 1