Una estructura de datos implementada sobre un array que soporte inserciones en cualquier posición es considerada al mismo tiempo como O(n) y Ω(1) V F. Un dato almacenado en un vector dinámico que permanece en dicha estructura de datos a lo largo de todo su ciclo de vida nunca cambia su posición de memoria. V F. La clase A tiene como atributo un mapa de punteros a objetos tipo B, entonces entre ellos puede existir una relación de composición. V F. Una matriz definida como (int a[3][5]) se almacena en una zona contigua de memoria. V F. Si se utilizara un vector como contenedor para un árbol AVL almacenando los hijos del dato (i) en las posiciones (2i) y (2i+1), las inserciones y borrados se realizarían necesariamente en tiempo O(n) aún utilizando vectores de apoyo. V F. No es más eficiente implementar una cola dinámica usando una lista de STL (list) que utilizando un vector (vector). V F. Si se introducen datos ordenados de forma ascendente en un AVL, el tipo de rotación que se realizaría siempre sería el caso 4. V F. Si la tabla hash T1 tiene un λ=0.8 significa que tiene más casillas vacias que T2 con un λ=0.7 V F. Las operaciones siguientes: it=miMap.find(7); (*it).first = 8; son válidas, siendo map<int, int> miMap; V F. Es posible que un árbol B de orden 20 tenga menos altura que otro árbol B con orden 22 albergando exactamente los mismos datos. V F. El tiempo requerido para iterar sobre un vector y una lista enlazada es el mismo, ya que el orden en ambos casos es O(n). V F. La intersección de dos conjuntos implementados mediante vectores dinámicos requiere tiempo O(n^2). V F. Una matriz dispersa es una estructura adecuada para representar la conectividad en un grafo dirigido: ni --> nj si la posición (i, j) contiene 1. V F. El puntero cola en una lista simplemente enlazada permite que la inserción y el borrado por el final tengan tiempo constante. V F. El orden de un árbol representa el número de hijos que obligatoriamente tiene cada nodo en un árbol. V F. Para que un árbol binario permita búsquedas eficientes en tiempo O(log n) debe cumplir la propiedad de que el dato en cada nodo tenga un valor inferior (o superior) a los de sus dos hijos. V F. En un árbol AVL tras una inserción el proceso de ajuste requiere a lo sumo una única rotación simple o doble. V F. Una tabla de dispersión con cubetas disminuye el riesgo de colisiones pero aun así requiere una estrategia de resolución de colisiones. V F. En un fichero con registros de longitud variable no siempre es posible reutilizar del hueco liberado por un registro borrado anteriormente para nuevas inserciones. V F. Un árbol B utiliza rotaciones para mantener el equilibrio en altura. V F. La siguiente definición de vector estático necesita de constructor copia y de operador de asignación:
template<typename T> class MiVect{
int tama;
T *v;
public:
MiVect(int n){ v = new T[tama = n]; }
...
}; V F. La siguiente clase debe definir asi el operador corchete ''[ ]'' para que funcione correctamente ( se obvian las comprobaciones de rango): T operator[](unsigned i) { return v[i]; }
template<typename T> class MiVect{
int tama;
T *v;
public:
MiVect(int n){ v = new T[tama = n]; }
...
}; V F. Si se ha instanciado en la clase ''Biblioteca'' a ''Mivect'' para implementar una relación de asociación con la clase ''Libro'' como:
MiVect<Libro*> estante;
Entonces el destructor de ''Biblioteca'' debe entonces eliminar ''estante'' ejecutando:
delete[] estante;
V F. Esta seria una posible instrucción dentro de la función que elimina el nodo apuntado por el puntero p de una lista doblemente enlazada:
p->sig->ant = p->ant; V F. Un vector de listas es un contenedor valido en términos de eficiencia para implementar una cola con prioridad y un grafo, aunque no tanto para una matriz dispersa. V F. En un árbol AVL, tanto el borrado como la inserción requieren la localización de algún nodo hoja durante el proceso. V F. La unión de dos conjuntos disjuntos de tamaños n y m pueden llevarse a cabo mediante una operación en O(1) V F. Un árbol B de orden cinco que está indexando 500 datos puede tener una altura 3 (4 niveles) V F. Para evitar tanto agrupamientos primarios como secundarios a la hora de hacer hashing es preferible utilizar dispersión cuadrática que dispersión doble. V F. Estas dos definiciones son validas para almacenar eficientemente las reservas de un hotel por fecha de emision:
map<Fecha, list<Reserva> >
multimap <Fecha, Reserva> V F. Si la clase ClassA tiene el siguiente atributo: map <string,ClassB> *atributo; entonces necesariamente la relación entre ClassA y ClassB es de asociación. V F. Una matriz dispersa y una cola con prioridad pueden tener en común el contenedor sobre el que se montan ambas estructuras de datos. V F. Si esta sentencia es válida:
int nuevoValor = 7;
it=mieedd.find(clave);
(+it) .second[i] = &nuevoValor;
Entonces mieedd puede tener esta definición:
map <int, vector<int> > mieedd;
V F. Un vector estático puede implementar eficientemente a pilas y colas estáticas. V F. Se pueden listar los datos de un árbol AVL o ABB en orden inverso a su definición sin necesidad de añadir un puntero al padre. V F. No es posible que un árbol AVL tenga un nodo hoja a una profundidad 4 y otra a profundidad 8. V F. El recorrido en profundidad de un grafo usa normalmente una cola mientras que en anchura su implementación es con pila o recursiva. V F. Dada la siguiente definición, la clase Fecha necesita la definición del operador >
multimap<Fecha, Reserva, greater<Fecha> > reservas; V F. En el proceso de inserción de un dato en un árbol B se puede repartir la carga de datos con nodos hermanos en el caso de que dicho dato no quepa en el nodo asignado. V F. Dado un nodo de un quadtree cuya codificación es 00-11-01-00, se puede saber exactamente las coordenadas del área al que hace referencia. V F. Todo mapa puede convertirse en un set si a la clase de objetos que contiene se le dotan de los operadores de comparación necesarios. V F. Los datos dentro de un nodo de un árbol B deben estar necesariamente ordenados. V F. Dada la siguiente definición de un multimapa:
multimap<Fecha, Reserva, greater<Fecha> > reservas;
la clase Fecha necesita la definición del operator<. V F. La operación de inserción en una lista simplemente enlazada en la posición anterior al nodo apuntado por el iterador it es una operación en tiempo constante: bool ListaEnlazada<T>::insertarAnt(const Iterador<T> &it, const T &dato); V F. Es más eficiente un quadtree que una malla regular a nivel de consumo de memoria para almacenar todos los códigos postales de EEUU. V F. El número de accesos a disco que se necesita para localizar un dato mediate un sistema de ficheros con un índice símple, depende o es directamente proporcional al tamaño de dicho índice. V F. Mediante la siguiente definición: int **p; p puede ser una matriz bidimensional, un vector o nada de lo anterior. V F. Una cola con prioridad siempre tendrá un push() en O(1) independientemente de la implementación concreta (vectores, vector de listas o listas de listas) V F. Averiguar las aristas de entrada a un nodo en un grafo dirigido implementado mediante listas invertidas(de adyacencias) es más costoso que implementado sobre una matriz de adyacencia. V F. Es peligroso usar un vector dinámico de objetos (no de punteros) si otra clase va a tener una asociación con estos objetos. Mirar el siguiente ejemplo, en el que la relación de composición entre A y B se implementa como: vector<B>.
V F.