► 30 preguntas solucionadas: ESTRUCTURA DE DATOS: Examen Universitario

Pregunta 1

Las variables son utilizadas por los programadores para almacenar datos de diferentes tipos según sea el caso, podemos diferenciar entre ellas las variables estáticas y las dinámicas. 

De a cuerdo a lo anterior se tienen algunas características que identifican el tipo de variable así: el tipo de variable de las cuales pueden ser creadas y destruidas durante el tiempo de ejecución de un módulo o de un programa; así como también este tipo de variable no presentan un tamaño fijo predefinido por el programador porque este es asignado de acuerdo como se requiera. 


De acuerdo a lo anterior identifique entre las siguientes opciones el tipo de variable que cumple con estas características. 

Seleccione una respuesta.

 a. Variables dinámicas Respuesta Correcta   
 b. Arreglos multidimencionales 
 c. Arreglos unidimencionales 
 d. Variables estáticas

Muy bien su respuesta es correcta las variables dinámicas se pueden crear y destruir en tiempo de ejecución de un programa.  


Pregunta 2

Seleccione uno de los siguientes temas que es tratado ampliamente en esta, la unidad uno. 

Seleccione una respuesta. 

 a. Colas 
 b. Operadores New y Delete Respuesta Correcta  
 c. Árboles 
 d. Lista Lineal

Su respuesta es correcta, New y delete son operadores de c++ para la gestión dinámica de memoria y se trata en la unidad uno. 
  
Pregunta 3.

Las estructuras de datos dinámicas permiten asignar memoria en tiempo de ejecución de acuerdo a lo anterior ¿Cuál es el límite de memoria dinámica que se puede asignar a un objeto de un programa que se encuentre en ejecución?. 

Seleccione una respuesta. 

 a. Depende del operador de C++ o de la función de C. que esté implementando en el programa para la gestión de memoria 
 b. Depende del tipo de dato del objeto que haga la reserva de memoria
 c. Depende del compilador que ama esté utilizando en la compilación del progr 
 d. El limite para la asignación dinámica puede ser tan grande como la cantidad de memoria física de su computadora Respuesta Correcta    

Muy bien su respuesta es correcta, en una estructura de datos la memoria se asigna dinámicamente tanto como sea necesario.

Pregunta 4.

Las preguntas que encontrará a continuación constan de una afirmación VERDADERA (tesis) y dos postulados, identificados con los números I y II. Usted debe analizar si los postulados se deducen lógicamente de la afirmación. 

Tesis: Una estructura lineal tipo Cola puede definirse como una colección ordenada de elementos del mismo tipo, con la limitante que solo se puede acceder por los dos extremos, es decir las inserciones se realizan por el final y eliminaciones se realizan por el inicio de la cola. 

Postulados: 

I. Las colas son conocidas como Listas FIFO, es decir el primero que ingresa es el primero que se elimina de la lista. La eliminación de los elementos debe hacerse en el mismo orden de su inserción.

II. Las operaciones en detalle que se pueden realizar con una cola son: acceder al primer elemento de la Cola para eliminarlo, añadir un elemento al final de la Cola, vaciar la Cola. 

Seleccione una respuesta.

 a. De la tesis solo se deduce el postulado I. Respuesta Correcta  
 b. De la tesis se deducen los postulados I y II. 
 c. Ninguno de los postulados se deduce de la tesis. 
 d. De la tesis sólo se deduce el postulado II.

Pregunta 5.

La pregunta que encontrará a continuación consta de una afirmación y una razón unidas por la palabra PORQUE. Usted debe juzgar tanto el grado de verdad o falsedad de cada una de ellas como la relación existente entre las mismas. 

En la implementación de las estructuras dinámicas lineales tipo cola se usa Un puntero del mismo tipo de la estructura que es utilizado como enlace al siguiente elemento de la cola, al igual que una lista enlazada PORQUE Un puntero es una variable que en su contenido guarda la dirección de otra variable a la que apunta, además, las variables de tipo puntero son utilizadas para la implementación de estructuras dinámicas porque pueden ser creadas y liberadas en tiempo de ejecución. 

 Seleccione una respuesta. 

a. La afirmación y la razón son VERDADERAS y la razón es una explicación CORRECTA de la afirmación. 
b. La afirmación y la razón y la razón son VERDADERAS, pero la razón NO es una explicación CORRECTA de la afirmación. Respuesta Correcta  
 c. La afirmación es FALSA, pero la razón es una proposición VERDADERA. 
 d. La afirmación es VERDADERA, pero la razón es una proposición FALSA. 

Pregunta 6.

Analice la siguiente declaración char *nombre[]; corresponde a la declaración de: 

Seleccione una respuesta. 

 a. Un arreglo de caracteres Respuesta Correcta 
 b. Un apuntador a apuntador 
 c.  Un arreglo de apuntadores  
 d. Un arreglo de arreglos 

Pregunta 7.

Las listas circulares presentan algunas ventajas respecto de las listas enlazadas simples una de ellas es que cada nodo de una lista circular es accesible desde cualquier otro nodo de ella. Es decir, dado un nodo se puede recorrer toda la lista completa. Sin embargo se pueden presentar algunos inconvenientes en su implementación. 

De las siguientes opciones seleccione la que hace referencia a la dificultad que puede presentar su uso. 

Seleccione una respuesta. 

 a.  Una lista enlazada de forma simple sólo es posible recorrerla por completo si se parte de su primer nodo  
 b. Las operaciones de concatenación y división de listas no se pueden realizar con listas circulares 
 c. Se puede presentar dificultad en las operaciones de Insurrección y búsqueda de un nodo 
 d. Se pueden producir lazos o bucles infinitos Respuesta Correcta 

Pregunta 8.

Para la implementación de una cola se define la siguiente estructura llamada cola que almacena registros de personas como el nombre y la edad; siendo esta una característica de las estructuras al almacenar datos de diferente tipo en un solo registro así mismo se declaran tres apuntadores del mismo tipo de la estructura que se utilizaran en la implementación para a gestionar la cola. 

 struct cola{ 
char nombre[15]; 
int edad; struct cola *sig; 
}*frente,*final, *auxiliar; 

Del análisis del fragmento de código que define una la estructura se puede inferir algunas consideraciones así: 

Seleccione al menos una respuesta. 

 a. Las variables *frente, *final y *auxiliar son miembros de la estructura cola 
 b. Las variables nombre[15], edad y *sig son instancias de la estructura cola 
 c. Las variables *frente, *final y *auxiliar son instancias de la estructura cola Respuesta Correcta 
 d. Las variables nombre[15], edad y *sig son miembros de la estructura cola Su respuesta es correcta, las variables *frente, *final y *auxiliar son instancias de la estructura cola mientras que las variables nombre[15], edad y *sig son miembros de la estructura cola 

Pregunta 9.

El siguiente fragmento corresponde a parte del código de una pila, Sabiendo que las variables inicio y punt son apuntadores, determine cuál de las siguientes opciones es la operación que realiza la siguiente función.  

void Función (void) 
{ 
if (punt==NULL) 
{ 
clrscr(); 
printf("NO HAY ELEMENTOS A LISTAR"); 
} 
else 
{ 
clrscr(); 
inicio=punt; 
while (inicio!=NULL) 
{ 
cout<<"Numero: "<<inicio->numero<<endl; 
inicio=inicio->sig; 
} 
}

Seleccione una respuesta. 

 a. Elimina un elemento de la pila 
 b. Insertar un elemento en la pila 
 c. Visualiza el contenido de la pila Respuesta Correcta  
 d. Busca un elemento de la pila 

Pregunta 10.

Para la implementación de una estructura de datos condicionada tipo Pila, paso a paso con apuntadores, intervienen algunos aspectos que hacen parte y complementan la implementación ellos son: 

Seleccione al menos una respuesta. 

 a. Un puntero para ligar o enlazar los elementos de la pila Respuesta Correcta  
 b. Un menú para la interacción de las opciones del programa 
 c. Una estructura que permite almacenar diferentes tipos de datos Respuesta Correcta  
 d. Utilizar funciones para implementar las operaciones a realizar con la Pila. 

Pregunta 11.

En la siguiente instrucción de código se declara una estructura para la implementación de una pila que almacenará números de tipo entero. 

 struct pila{ 
int numero; 
struct pila *sig; 
}*inicio,*c; 

 A continuación se presenta el código de la definición de la función insertar, la cual permite insertar datos a la pila. 

 void insertar (void){ 
 inicio=new struct pila; 
 cout<<"Digite el dato de tipo ENTERO: "; 
 cin>>inicio->numero; 
 if (c==NULL) 
{ 

c=inicio; 
inicio->sig=NULL; 
 }

else

{ inicio->sig=c; c=inicio; 
} 
} 

Si se quiere reemplazar el operador new por la función malloc()para la gestión dinámica de memoria ¿Cuál sería la instrucción correcta?. 

Seleccione una respuesta. 

 a. inicio=(struct pila *)malloc(sizeof(struct pila));Respuesta Correcta   
 b. inicio=(struct pila *)malloc(sizeof(int pila)); 
 c. inicio=malloc() struct pila; 
 d. inicio=(int pila *)malloc(sizeof(int));

Muy bien su respuesta es correcta, porque la función malloc() recibe como argumento a struct pila como el tipo del objeto que se va asignar y devuelve un apuntador a un objeto del mismo tipo, es decir de struct pila.

Pregunta 12.

Una vez que esté editado y codificado el programa en C++, se procede a la compilación. ¿Qué puede ocurrir después de la compilación?. 

Seleccione una respuesta.

a. De forma Automática se presenta la ejecución del programa 
b. se detectan los errores léxicos y sintácticos en caso que existan Respuesta Correcta . 
 c. La compilación solo permite guardar el código con la extensión .cpp 
 d. Se muestra el resultado en pantalla

Muy bien su respuesta es correcta, después de la compilación se muestran posibles errores se sintaxis en caso que existan 

  
Pregunta 13.

Analice el siguiente código, haga una prueba de escritorio y determine entre las opciones de respuesta, el valor que toman las tres variables (*x,**y,a) al finalizar el programa en su salida en pantalla. 

 void main(){ 
 int a=10,*x,**y; 
 x = &a; 
 *x = 20; 
y = &x ; 
**y += *x; 
 cout << "El valor de a es:"sig; free(inicio); 
 } 
 } 

 Seleccione una respuesta. 

a. Las tres variables muestran el valor de 30 
b. La variable a muestra el valor 10, la variable *x y la variable **y muestran el valor de 20 
c. Las tres variables muestran el valor de 40  Respuesta Correcta   
d. La variable a muestra el valor 10, la variable *x y la variable **y muestran solo muestran direcciones de memoria.

Pregunta 14.

 En las características de las estructuras lineales tipo Colas se dice que es una estructura de datos lineal condicionada o limitada porque: 

Seleccione una respuesta. 

 a. Se elimina por el inicio y se inserta por el final Respuesta Correcta   
 b. Se inserta y se elimina por el final 
 c. Ultimo en llegar primero en salir 
 d. Se inserta y se elimina por el inicio 

Pregunta 15.

El siguiente fragmento de código fuente, corresponde a una parte de la implementación de una pila, Sabiendo que las variables inicio y c son apuntadores y numero es un miembro de la estructura; determine cuál de las siguientes opciones es la operación que realiza la siguiente función. 

 void Función (void) 
{ 
if (c==NULL) 
{ n clrscr(); 
printf("NO HAY ELEMENTOS EN LA PILA"); 
 getch();
}
else
{ inicio=c;
 cout<<"El dato a eliminar es: "<numero; delay(1000);
 c=c->sig;
 free(inicio);
}
} 

Seleccione una respuesta. 

 a. Insertar datos a la pila 
 b. Eliminar datos de la pila   Respuesta Correcta   
 c. Visualizar datos de la pila 
 d. Recorrer la pila

Pregunta 16.

La Unidad uno del módulo está identificada como Memoria dinámica, la cual tiene como objetivo profundizar en aspectos básicos en apuntadores y la asignación dinámica de memoria. 

De acuerdo a lo anterior, identifique entre las siguientes opciones la temática que NO hace parte de esta unidad. 

 Seleccione una respuesta. 

 a. Listas Lineales  Respuesta Correcta   
 b. Gestión dinámica de memoria 
 c. Apuntadores 
 d. Operadores y funciones para la gestión dinámica de memoria.

Muy bien esta temática no corresponde al unidad uno es de la unidad dos 

Pregunta 17.

La memoria del computador es utilizada para almacenar información de diferentes tipos esta esta dividida en segmentos que almacenan ceros y unos conocido como información digital. De acuerdo a lo anterior es importante saber 

¿cuánto espacio medido en Bites se requiere para almacenar el numero 258 que es un dato de tipo short int o entero corto? 

Seleccione una respuesta. 

 a. 8 Bits 
 b. 16 Bits   Respuesta Correcta  
 c. 32 Bits 
 d. 64 Bits

Su respuesta es correcta, para almacenar un entero corto se requieren 16 bits

Pregunta 18.

Las estructuras de datos lineales son representadas a través de listas enlazadas con el uso de apuntadores y por medio de arreglos unidimencionales. La razón primordial para que en su implementación se haga uso de los apuntadores obedece a: 

Seleccione una respuesta. 

 a. permiten almacenar mucho más información que un arreglo 
 b. La gestión dinámica de memoria. Respuesta Correcta 
 c. Permite almacenar datos de diferentes tipos 
 d. Ocupan menos espacio en memoria que una variable normal 

Pregunta 19.

Apuntador,es uno de los temas claves tratados en la unidad uno, seleccione entre las siguientes opciones la definición de apuntador mas apropiada. 

Seleccione una respuesta. 

 a. Variable dinámica que solo guarda datos de tipo foat 
 b. Variable estática utilizada para almacenar cualquier tipo de datos 
 c. Variable estática que guarda la dirección de memoria de otra variable de cualquier tipo de dato 
 d. Varible que guarda la dirección de memoria de otra variable del mismo tipo de datos a la que apunta Respuesta Correcta   

Los apuntadores guardan direcciones de memoria del mismo tipo de datos a la que apunta

Pregunta 20.

En la unidad uno se llama Memoria Dinámica y está dividida en tres capítulo, en uno de ellos se aborda la temática de Apuntadores. teniendo en cuenta lo anterior identifique entre las siguientes opciones la forma correcta de declarar una variable apuntador llamada valor de tipo float o punto flotante. 

Seleccione una respuesta. 

 a. float *valor; Respuesta Correcta   
 b. char *valor; 
 c. int *valor; 
 d. float valor;

Muy bien, se declara a valor como un apuntador de tipo float

 Pregunta 21.

La memoria del computador esta dividida en segmentos que almacenan ceros y unos conocido como información digital, por lo cual es un recurso invaluable que se debe optimizar ya que es utilizada para almacenar información de diferentes tipos y cada vez la información adquiere un peso mayor debido a la utilización de la multimedia. 

Si se requiere almacenar un valor de tipo float, es decir de punto flotante como por ejemplo el total de una factura o el costo de una inversión que puede ser un valor de 2346.78 

¿Cuántos bits de memoria requiere para almacenar este valor?.

 Seleccione una respuesta.

 a. 64 Bits 
 b. 32 Bits  Respuesta Correcta  
 c. 16 Bits 
 d. 8 Bits

Su respuesta es correcta para un dato de tipo float se requieren 32 bits que equivalen a 4 bytes 

 Pregunta  22.

Analice las siguientes lineas de códigos y determine que representa la instrucción de la linea 4, free(ptr); de acuerdo a las siguientes opciones.

Void main{ 
int *ptr; 
ptr = (int*)malloc (sizeof(int) ); 
free(ptr); 
} 

Seleccione una respuesta. 

 a. Se asigna memoria al apuntador ptr 
b. Se libera la memoria asignada previamente al apuntador ptr  Respuesta Correcta 
 c. Se libera la memoria asignada a través de la función Delete 
 d. Se reserva memoria a través del operador free

Muy bien, su respuesta es correcta, la instrucción free(ptr); libera la memoria asignada previamente al apuntador ptr. 

 Pregunta 23.

El valor almacenado en un apuntador es: 

Seleccione una respuesta.

 a. Una variable de cualquier tipo 
 b. Un dato de tipo char 
 c. Una constante 
 d. Una dirección de memoria    Respuesta Correcta 

Muy bien su respuesta es correcta, un apuntador almacena direcciones de memoria.  
 Pregunta  24.

Una de las siguientes asignaciones de memoria es correcta, sabiendo que ptr es un puntero de tipo entero cual es?: 

Seleccione una respuesta. 

 a. ptr = (int*)malloc ( 300*sizeof(char) ). 
 b. ptr = (int*)malloc ( 500*sizeof(int) ); Respuesta Correcta 
 c. ptr = (char*)malloc ( 300*sizeof(char) ). 
 d. ptr = (char*)malloc ( 300*sizeof(int) ). 

Muy bien, su respuesta es correcta, la instrucción ptr = (int*)malloc(500*sizeof(int)); permite asignar un numero determinado de memoria para un dato de tipo entero.

 Pregunta  25.

Cuan do se declara int x, *a, **b; indica que x es una variable de tipo entero, *a es un apuntador que devuelve un dato de tipo entero; 

¿Qué significa la declaración int **b? 

Seleccione una respuesta. 

 a. Se declara a b como un apuntador a apuntador que devuelve un dato de tipo entero; Respuesta Correcta 
b. Se declaran dos apuntadores b para almacenar direcciones de memoria de datos de tipo entero; 
c. Se declara a b como un apuntador que devuelve un dato de tipo entero; 
d. Se declara a b como un apuntador que devuelve un dato de cualquier tipo;

Muy bien su respuesta es correcta, Se declara a b como un apuntador a apuntador que devuelve un dato de tipo entero; 

 Pregunta  26.

Cuando se realiza la asignación dinámica de memoria haciendo uso de la función malloc() en la sintaxis del código la función malloc() hace uso del operador sizeof el cual es requerido por esta función para: 

Seleccione una respuesta. 

 a. Determinar el número de bytes que se requiere reservar Respuesta Correcta 
 b. Devolver el tipo de dato y el tamaño de la memoria reservada por malloc() 
 c. Indicar que se debe liberar la memoria previamente asignada 
 d. Indicar que hay suficiente espacio en memoria

Muy bien su respuesta es correcta, el operador sizeof indica los bytes requeridos en la reserva de memoria.

 Pregunta  27.

  El siguiente fragmento de código hace referencia a una función utilizada en la implementación de una estructura de datos tipo pila. 

void funcion(void) { 
primero=(struct pila *)malloc(sizeof(struct pila)); 
 cout<<"Digite Nombre de Computadora o Equipo:"; 
cin>>primero->equipo; 
if(x==NULL) 
{ x=primero; 
 primero->sig=NULL; 
 }
else
{ primero->sig=x; x=primero; 
 } 
}

Realice un análisis del código propuesto e identifique entre las siguientes opciones de operaciones que se pueden realizar con las pilas a cual de ellas corresponde. Puede hacer uso de una prueba de escritorio. 

 Seleccione una respuesta.

 a. La función permite visualizar los elementos de la pila 
 b. La función permite localizar elementos de la pila 
 c. La función permite insertar elementos a la pila Respuesta Correcta   
 d. La función permite eliminar los elementos de la pila

 Pregunta  28.

En un entorno de programación C++ el termino Biblioteca se refiere a: 

Seleccione una respuesta. 

 a. El conjunto de libros coleccionados disponibles para aprender el lenguaje.
 b. Es el conjunto de funciones que se declaran en el desarrollo de un programa codificado en C++. 
 c. El conjunto de variables que se declaran en un programa codificado en C++ 
d. El conjunto de funciones pre compiladas que contienen utilidades para facilitar la programación Respuesta Correcta  

Muy bien su respuesta es correcta, las bibliotecas son también llamados archivos de cabecera que se incluyen en las primeras líneas del código.

 Pregunta  29.

Las estructuras de datos se clasifican en estructuras lineales y estructuras no lineales, de acuerdo a lo anterior indique ¿Cual de las siguientes opciones no es considerada una estructura de datos lineal? 

Seleccione una respuesta. 

 a. Árboles   Respuesta Correcta
 b. Colas 
 c. Pilas 
 d. Lista doblemente enlazada

Muy bien su respuesta es correcta, los árboles son estructura de datos no lineales.

  Pregunta  30.

En C++ se pueden declarar variables dependiendo el ámbito de visibilidad, es decir en que momento se puede acceder a ella. Existen tres tipos de variables: Locales, globales y estáticas. De acuerdo a lo anterior, identifique entre las siguientes características la que corresponda a las variables globales. 

Seleccione una respuesta.

a. Son variables que se definen dentro del cuerpo de una función, y solo puede ser llamada dentro de la función donde se declaró. 
 b. Son variables que no pueden ser llamadas o utilizadas por ficheros externos en un programa 
 c. Son variables que se declaran con el modificador static que quiere decir que se asigna una posición en memoria. 
 d.  Son variables que se definen fuera del cuerpo de las funciones y esto hace que estén visibles o disponibles desde cualquier lugar del programa. Respuesta Correcta 

Muy bien su respuesta es correcta, las variables globales pueden ser llamadas inclusive por otras funciones.

 Pregunta  31.

Un estructura de datos tipo cola puede ser implementada a través de arreglos o listas ligadas. A continuación se presenta la estructura que se utiliza para implementar una cola por medio de una lista ligada en la cual se almacenan placas de vehículos: 

struct cola 
{ char placa[6]; 
struct cola sig; 
} *CAB=NULL,*P, *Q; 

Identifique cuál es el problema en la definición de la estructura:

Seleccione una respuesta. 

 a.  Error en la definición del puntero que sirve de enlace al siguiente elemento de la lista Respuesta Correcta  
 b. El puntero CAB nunca puede inicializarse en NULL 
 c.  Los punteros CAB, P y Q sobran pues nunca se usan
 d. La placa debería dividirse en parte de letras y parte numérica 

Publicar un comentario

0 Comentarios