PACIAL II Flashcards
win data structure parcial 2
Considere la operación borrarExtremos que recibe una lista y elimina el primer elemento y el último elemento. ¿Cuál es la menor complejidad que se puede obtener para esta operación? ¿Qué implementación de listas se debería usar para obtener dicha complejidad? Explique.
Explique con un ejemplo del mundo real la diferencia entre los conceptos de objeto y clase.
Zlatan escribe una implementación del TAD Lista en donde cada nodo tiene
un apuntador al nodo siguiente y un apuntador al inicio de la lista. Zlatan se da cuenta de
que en algunos casos tener ciertos atributos públicos en la clase que representa la lista le
permite escribir algunas operaciones de forma más eficiente. ¿Es correcto afirmar que lo que realiza Zlatan es acorde al principio de abstracción de datos? Explique.
Explique qué es el principio de abstracción en tipos abstractos de datos.
Zlatan está discutiendo con su amigo Teofilo sobre el uso de tipos abstractos
de datos. Zlatan dice que implementar TADs mediante clases en C++ favorece respetar
el principio de abstracción mientras que Teofilo dice que eso no es correcto ya que en
cualquier caso se puede acceder directamente a los atributos de las clases y manipular el dato directamente. ¿quién tiene la razón? Explique.
Considere la operación correrElementos que recibe una lista l y rota los ele-
mentos en l una posición a la derecha. De esta manera, si se tiene una lista
l = [3, 4, 2, 1, 11, 8], la invocación correrElementos(l) debería hacer que l quede
con los elementos [8, 3, 4, 2, 1, 11].
Defina esta operación. ¿Cuál es la menor complejidad que se puede obtener para esta op-
eración? ¿Cuál o cuáles implementaciones de listas se podrían usar para obtener dicha complejidad? Explique.
como itarariamos con
min element o max element?
si es un vector
vector vec1;
vector<>:: iterator it = max_element(vec1.begin(), vec1.end());
*it = max(
en que momento se usa min element o max element?
Las funciones min_element y max_element permiten obtener el elemento
m ́as peque ̃no y m ́as grande de un rango de elementos en un contenedor.
X La b ́usqueda se hace a trav ́es de iteradores que apuntan a la posici ́on
inicial y a la posici ́on final de la secuencia en la cual se desea buscar.
X Por defecto, se utilizan los operadores < y >.
¿Qué ofrece la biblioteca STL de C++ en términos de implementaciones de estructuras de datos y funciones generales?
proporciona implementaciones de estructuras de datos y funciones generales que pueden ser parametrizadas con diferentes tipos de datos. Esto significa que las estructuras de datos y funciones en la STL están diseñadas de manera que puedan trabajar con diversos tipos de datos, utilizando plantillas (templates) para la parametrización.
¿Cómo utiliza la STL el paradigma de Programación Orientada a Objetos (POO) en sus funciones y estructuras, específicamente en relación con contenedores?
utiliza principalmente conceptos como herencia y polimorfismo en relación con contenedores
¿Cuáles son los tres componentes principales de la STL de C++ según su diseño general?
Contenedores: Proporcionan implementaciones de estructuras de datos como vectores, listas, conjuntos, mapas, pilas, colas, etc., que pueden almacenar y gestionar colecciones de elementos.
Algoritmos: Ofrece una amplia gama de algoritmos genéricos (por ejemplo, clasificación, búsqueda, manipulación de datos) que pueden trabajar con diferentes tipos de contenedores.
Iteradores: Son utilizados para acceder y manipular secuencialmente elementos en contenedores. Los iteradores proporcionan una abstracción para recorrer y operar sobre los elementos de un contenedor de manera genérica y eficiente.
¿Qué tipo de funciones están diseñadas para operar sobre rangos de elementos que forman parte de contenedores en la biblioteca STL en la bibliotecca algorithm?
Respuesta: Las funciones diseñadas para operar sobre rangos de elementos en contenedores incluyen algoritmos como algoritmos de ordenamiento, algoritmos de búsqueda, algoritmos útiles sobre arreglos y otros algoritmos misceláneos.
¿Qué función cumplen los iteradores en la biblioteca STL de C++?
Respuesta: Los iteradores en la biblioteca STL permiten recorrer secuencias de valores en contenedores de manera transparente y eficiente.
¿Por qué los iteradores son una característica clave que favorece la generalidad de la STL?
Respuesta: Los iteradores permiten operar de manera uniforme sobre elementos almacenados en contenedores, lo que facilita la implementación de algoritmos genéricos que pueden funcionar con diferentes tipos de contenedores.
¿Cómo se define un iterador en el contexto de la biblioteca STL?
Respuesta: Un iterador en la STL es un objeto que permite recorrer y acceder a los elementos de una colección (contenedor) en C++. Proporciona una abstracción para trabajar con elementos almacenados en diferentes tipos de contenedores, como vectores, listas, conjuntos, mapas, etc.