Está en la página 1de 45

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA


Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

1.- Un arreglo de datos no:


a. Puede ser multidimensional ( )
b. En lenguaje C, su identificador corresponde a su dirección inicial ( )
c. Pueden usarse para implementar aritmética de matrices ( )
d. Puede contener apuntadores a cadenas de caracteres de longitud variable ( )
a. Contiene datos de diferente tipo (x)

2.- Una estructura de datos no:


a. Es un conjunto de datos de diferente tipo ( )
b. Puede contener apuntadores como elementos o campos ( )
c. Puede contener apuntadores a función ( )
d. Se utiliza en la aritmética de Galois ( )
e. Puede contener especificaciones de otras estructuras como campos o elementos (x)

3.- La declaración
struct NODO
{
char NOMBRE [20];
int CONTADOR;
struct NODO *IZQUIERDO;
struct NODO *DERECHO;
};
a. Está mal porque hace referencia a si misma (x)
b. Tiene un error de sintaxis (x)
c. No tiene la lógica (x)
d. Es una estructura válida y se aplica a la hoja de un árbol ( )
e. Puede producir un abrazo mortal ( )

4.- Un encabezado de protocolo de comunicación no es:


a. La estructura de datos que implementa una especie de sobre virtual que le permite a
los datos viajar hacia su destino ( )
b. La estructura de datos que se le agrega a un segmento de datos, para administrar su
viaje a través de la red y su entrega ordenada y adecuada al destinatario ( )
c. Un registro de los datos que definen un paquete de datos ( )
d. La información que encabeza un mensaje de datos ( )
e. La información que define la estructura de un mensaje ( )
TODAS SON CORRECTAS
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

5.- Una unión de datos es:


a. Un campo de datos variable, útil en la especificación de estructuras de datos
complejas (x)
b. La unión de dos conjuntos de datos (x)
c. La unión de varias localidades de memoria RAM ( )
d. Define los espacios que ocupa el programa y su dimensionalidad ( )
e. Es un elemento importante de la fase de declaraciones del programa ( )

6.- Un apuntador no:


a. Es una constante entera que define la posición que tiene un dato en la memoria ( )
b. Es un recurso del programador que permite pasar datos diversos como parámetros
de una función ( )
c. Es un recurso básico de la programación con el lenguaje C ( )
d. Es un recurso básico de la programación con JAVA (x)
e. Es un recurso básico de la programación con Fortran (x)

7.- La dirección resultante de la expresión de aritmética de


apuntadores Tabla + 4 (donde Tabla es la dirección de inicio
(0x A0000) de un arreglo de estructuras de tipo registro, el
cual posee tres campos de 60 caracteres, un campo de 8
caracteres, tres campos de 2 caracteres, 2 de 80 caracteres y
dos de 10 caracteres) es:
a. 0x A0004 ( )
b. 0x A0374 (x)
c. 0x A5C8 ( )
d. 0x A1496 ( )
e. 0x A0176 ( )

8.- La dirección del quinto elemento de un arreglo de números


de punto flotante de doble precisión, cuya dirección inicial
está en la localidad 0XA000 es:
a. 0xA000 ( )
b. 0Xa005 (x)
c. A005 ( )
d. 0xA028 ( )
e. 0XA040 ( )
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

9.- La operación casta:


a. Permite cambiar la característica de tipo de dato asociada con una localidad de
memoria (x)
b. Es una expresión unaria que opera sobre un dato para cambiar su clase y longitud
( )
c. Se asocia con las declaraciones de datos (x)
d. Determina el área de aplicación de una variable o estructura de datos ( )
e. Determina la clase de almacenamiento de una variable o estructura de datos ( )

10.- En programación orientada a objetos una Clase es:


a. La especificación de los datos y los métodos para caracterizar un conjunto de
objetos (x)
b. Una tipo de datos determinado y sus operadores ( )
c. Una estructura de datos compleja ( )
d. Un segmento de programa con declaraciones y funciones reutilizable (x)
e. Un tipo de funciones aplicables a un determinado tipo de dato (x)
11.- En programación orientada a objetos, un objeto es:
a. Un módulo de programa ( )
b. Un dato de un tipo específico (x)
c. Una instancia de una clase de datos (x)
d. El objeto de la programación (x)
e. Una área de memoria
( )

12.- En programación orientada a objetos un método es:


a. Una función o algoritmo aplicable a la Clase a la que está asociado (x)
b. El procedimiento para almacenar los datos de una Clase ( )
c. Un segmento de programa reutilizable ( )
d. Un segmento de programa estructurado (x)
e. Una estructura de programa (x)

13.- Un registro de datos:


a. Es un conjunto de datos almacenado en las estructuras (x)
b. Es el concepto de estructura de un conjunto de campos que caracterizan una base de
datos (x)
c. Es el identificador o registro de una estructura de datos ( )
d. Corresponde a las denominaciones de las columnas de una Tabla ( )
e. Es un elemento unitario y diferente de una base de datos ( )
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

14.- Una Tabla de registros es:


a. Un conjunto de declaraciones de estructuras de datos y de algoritmos que se arman
para ejecutar una tarea ( )
b. Un programa ejecutable que realiza una determinada función (x)
c. Es un arreglo de estructuras de datos que permite ordenar y administrar los datos de
los elementos de una base de datos (x)
d. Una lista de elementos de tipos homogéneos ( )
e. Es un concepto usado para el diseño de sistemas de archivos ( )

15.- Un descriptor:
a. Puede ser reconocido o interpretado por un autómata de estados finitos (x)
b. Describe los campos de una estructura de datos (x)
c. Es una estructura de datos usual en aplicaciones de manejo de archivos y/o objetos
en sistemas operativos ( )
d. Es un concepto que aplica en el área de sistemas ERP y CRM ( )
e. Permite hacer búsquedas inteligentes en el archivo ( )

16.- Los siguientes son todos sistemas de archivos


soportados por los sistemas operativos Linux y Windows:
a. ISO9660, FAT, FAT32, NTFS, NFS (x)
b. Mach, FreeBSD, MkLinux, NetBSD, OpenBSD ( )
c. VGA, SVGA, XGA, SXGA, UXGA ( )
d. IP, PIV6, TCP, SSL, HTTP, HTTPS, FTP ( )
e. IDE, SCSI, ATA, SATA, SATA II,SAS ( )

17.- Un encabezado de archivo:


a. Es el identificador asociado con un archivo (x)
b. Es la estructura del archivo (x)
c. Es la estructura de datos que contiene todos los elementos que definen el tipo de
archivo, la forma de visualizarlo y administrarlo (x)
d. Es el registro del archivo en la tabla de registro de archivos ( )
e. Es la parte inicial de un sistema de archivos (x)
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

18.- Enliste los métodos más usuales que se aplican a una


lista

Tabla de métodos:
assign asigna elementos a la lista
back devuelve una referencia a el último componente de la lista
begin devuelve un iterator al principio de la lista
clear elimina todos los componentes de la lista
empty true si la lista está vacía
end devuelve un iterator al final de la lista
erase elimina componentes de la lista
front devuelve una referencia al primer componente de la lista
insert inserta componentes en la lista
max_size devuelve el número máximo de elementos soportados por la lista
merge une dos listas
pop_back elimina el último componente de la lista
pop_front elimina el primer componente de la lista
push_back añade un componente al final de la lista
push_front añade un componente al frente de la lista
rbegin devuelve un reverse_iterator hacia el final de la lista
remove elimina componentes de la lista
remove_if elimina condicionalmente componentes de la lista
rend devuelve un reverse_iterator hacia el inicio de la lista
resize cambia el tamaño de la lista
reverse pone al revés los componentes de la lista
size devuelve el número de componentes en la lista
sort ordena la lista
splice unión de dos listas
swap intercambia el contenido de una lista con el de otra
unique elimina componentes duplicados
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

19.- Diseñe una lista enlazada cuyos nodos tengan los


datos de número de orden de solicitud de servicio, nombre,
apellidos, edad y género de las personas que forman la lista;
diseñe además un método que permita localizar en esta lista,
a una persona por medio de su nombre y apellidos.
Desarrolle el programa en lenguaje C++ y pruébelo.

class PilaArreglo
{
private Object[] arreglo;
private int tope;
private int MAX_ELEM=100; // maximo numero de elementos en la pila
public PilaArreglo()
{
arreglo=new Object[MAX_ELEM];
tope=-1; // inicialmente la pila esta vacía
}
public void apilar(Object x)
{
if (tope+1<MAX_ELEM) // si esta llena se produce OVERFLOW
{
tope++;
arreglo[tope]=x;
}
}
public Object desapilar()
{
if (!estaVacia()) // si esta vacia se produce UNDERFLOW
{
Object x=arreglo[tope];
tope--;
return x;
}
}
public Object tope()
{
if (!estaVacia()) // si esta vacia es un error
{
Object x=arreglo[tope];
return x;
}
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

}
public boolean estaVacia()
{
if (tope==-1)
{
return true;
}
else
{
return false;
}
}
}
20.- Diseñe una lista enlazada cuyos nodos tengan los
datos de nombre y género de las personas que forman un
grupo; diseñe además un método que a partir de esta lista,
construya otra lista que solo contenga las personas de sexo
femenino. Desarrolle el programa en lenguaje C++ y
pruébelo.
#include <stdio.h>
#include <stdlib.h>
/* Apuntador al archivo de entrada salida para guardar la Lista*/
FILE *ARCHIVO;

struct Nodo
{
int IDentidad, Edad;
char *Nombre[30], *Apellidos[50],*genero[10];
struct Nodo *sig ;
} *Inicio=NULL,*Otro, *Anterior, *Actual ,*gen,*femenino=NULL;

void CrearNodo()
{
puts("Procedo a crear un nodo");

/*Para ello le tenemos que asignar memoria*/


Otro = (struct Nodo*)malloc(sizeof(struct Nodo));
if (Otro == NULL) {puts ("Error de asignacion \n"); getchar();}
else
{ // Creado el nodo procedemos a capturar los datos
printf ("\n\tIntroduce IDentidad:\t"); scanf("%d", &Otro->IDentidad);
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

printf ("\tIntroduce Nombre:\t"); scanf("%s", &Otro->Nombre);


printf ("\tIntroduce Apellidos:\t"); scanf("%s", &Otro->Apellidos);
//printf ("\tIntroduce Edad:\t\t"); scanf("%d", &Otro->Edad);
printf("\tIntroduce el Genero\t");scanf("%s",&Otro->genero);
Otro->sig = NULL; // Iniciamos el apuntador al siguiente nodo con NULL
}
}

/* Metodo para insertar un nuevo Nodo o Registro en la Lista*/


void Insertar(struct Nodo *NodoI)
{
Actual = NodoI; Anterior = NodoI; // Inicializar apuntadores Anterior y Actual
if (Inicio == NULL)
{Inicio = NodoI;} // Caso de insertar el primer nodo o elemento
else
{ // Busqueda de la posicion de insercion
ordenada
Otro = Inicio;
while ((Otro->sig != NULL)&&(Otro->IDentidad < NodoI->IDentidad))
{
Anterior = Otro;
Otro = Otro->sig;
}
if (Otro->IDentidad >= NodoI->IDentidad)
{
if(Otro == Inicio)
{ // Caso de insercion al inicio de la Lista
Inicio = NodoI; NodoI->sig = Otro;
}
else
{ // Caso de insercion entre medio de la Lista
Anterior->sig = NodoI;
NodoI->sig = Otro;
}
}
// Caso de insercion al final de la Lista
else Otro->sig = NodoI;
}
printf("Inicio de la Lista = %x\n", Inicio);
printf("Nodo insertado = %d\n", NodoI->IDentidad);
printf("Nodo anterior = %d\n", Anterior->IDentidad);
printf("Nodo siguiente = %x\n", NodoI->sig);
getchar();
}

void Buscar(int ID)


INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

}
void Visualizar()
{
int ID;
printf("Identidad del elemento que quieres buscar: \n\t");
scanf("%d", &ID);
Buscar(ID);
if ((Actual->IDentidad == ID) && (Actual!=NULL))
{
printf("Identidad:\t%d\n", Actual->IDentidad);
printf("Nombre:\t\t%s\n", Actual->Nombre);
printf("Apellidos:\t%s\n", Actual->Apellidos);
printf("Genero:\t\t%s\n", Actual->genero);
}
else
printf("No se encuentra el elemento en la Lista\n");
getchar();
}

/* Metodo para eliminar un Nodo o Registro de la Lista*/


void Eliminar()
{
int ID;
printf("Identidad del elemento que quieres eliminar: \n\t");
scanf("%d", &ID);
Buscar(ID);
if (Actual != NULL)
{
if (Actual == Inicio) Inicio = Actual->sig;
else Anterior->sig = Actual->sig;
free(Actual);
}
else
printf("No se encuentra el elemento en la Lista\n");
getchar();
}

void Listar()
{
Actual = Inicio;
gen=femenino ;
printf("Identificador\t Nombre\t\t Apellidos\t Genero\n");
while (Actual != NULL)
{
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

printf(" %d\t\t %s\t\t %s\t\t %s\n", Actual->IDentidad, Actual->Nombre,


Actual->Apellidos, Actual->genero);
Actual = Actual->sig;
}

getchar();
}

/* Metodo para para guardar una lista */


void GuardarLista()
{
Actual = Inicio;
char ARCH[80];
printf("NOMBRE DEL ARCHIVO DE SALIDA?\n");
scanf("%s", ARCH);
if ((ARCHIVO = fopen(ARCH,"w")) == NULL)
{
printf("No se pudo crear el archivo\n");
return;
}

while(Actual != NULL) // Si hay datos en la Lista los guarda


{
// Se guardan los datos del nodo Actual y se pasa al siguiente
fprintf(ARCHIVO, "%d\n", Actual->IDentidad); // Guarda
IDentidad
fprintf(ARCHIVO, "%s\n", Actual->Nombre); // Guarda Nombre
fprintf(ARCHIVO, "%s\n", Actual->Apellidos); // Guarda Apellidos
if (Actual->sig != NULL)fprintf(ARCHIVO, "%d\n", Actual->Edad);
else fprintf(ARCHIVO, "%d", Actual->Edad); // Guarda edad
Actual = Actual->sig; // Iniciamos el apuntador al siguiente nodo con NULL
}
fclose(ARCHIVO);
}

int main()
{
int Comando;
while (Comando != 'S')
{
printf("\n\n\tMENU DE MANEJO DE LA LISTA ENCADENADA SIMPLE\n\n");
printf("\tN. Crear un Nodo o Registro\n");
printf("\tI. Insertar Nodo\n");
printf("\tE. Eliminar Nodo\n");
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

printf("\tL. Presentar la Lista de trabajo en pantalla\n");


printf("\tG. Guardar la Lista de trabajo en un archivo\n");
printf("\tS. Salir\n");
scanf("%d", &Comando);
Comando = getchar();
printf("Comando %c\n", Comando);
switch (Comando)
{
case 'N': {CrearNodo(); break;}
case 'I': {Insertar(Otro); break;}
case 'E': {Eliminar(); break;}
case 'L': {Listar(); break;}
case 'G': {GuardarLista(); break;}
case 'S': break;
}

}
}

21.- Diseñe una lista doblemente enlazada cuyos nodos


almacenen caracteres y desarrolle un método que determine
si el contenido de la lista es un palindroma (Un palindroma
es una frase que se lee igual de izquierda a derecha que de
derecha a izquierda). Desarrolle el programa en lenguaje C++
y pruébelo.
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

struct nodo{
char dato;
struct nodo *sgte;
};

typedef struct nodo *TPila;

/* Crear Nodo
--------------------------------------------------------------------*/

TPila crearNodo(char x)
{
TPila newNodo = new(struct nodo);
newNodo->dato = x;
return newNodo;
}
/* Apilar
--------------------------------------------------------------------*/
void push(TPila &top, char x)
{
TPila aux = crearNodo(x);
aux->sgte = top;
top = aux;
}
/* Desapilar
---------------------------------------------------------------------*/
char pop(TPila &top)
{
int c ;
TPila aux;

aux = top ;
c = aux->dato; // asignamos el primer vamor de la pila
top = aux->sgte ;
delete(aux);
return c;
}

/* Palindroma
---------------------------------------------------------------------*/
void verificarPalindroma( TPila &p, string cad)
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

{
TPila aux;

/* Borrando los espacios de la cadena */


for(int i=0; i<cad.size(); i++)
if(cad[i]==32)
cad.erase(i,1); // borramos el caracter espacio(ASCII 32)

/* Apilamos cada uno de los caracteres, el ultimo sera el primero en la pila*/


for(int i=0; i<cad.size(); i++)
push(p, cad[i]);

/* Comparando la cadena con la pila */


for(int i=0; i<cad.size(); i++)
{
aux = p; // apunta siempre a la cima de la pila para comparar

if(cad[i]== aux->dato)
pop( p );
else
break;
}

if( p==NULL)
cout << "\n\t La frase ES PALINDROMA..." << endl;
else
cout << "\n\t La frase NO ES PALINDROMA..." << endl;
}

/* FUNCION PRNCIPAL
-------------------------------------------------------------------*/

int main()
{
TPila pila = NULL; // creando Pila
string cad;

cout<<"\n\t\tVERIFICAR FRASE PALINDROMA CON PILAS \n\n";

cout << " Ingrese palabra: ";


getline(cin, cad);
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

verificarPalindroma( pila, cad );

cout<<"\n\n ";
system("pause");
return 0;
}

22.- Una lista circular:


a. Es una estructura de datos en forma de lista cuyo último elemento está ligado al
primero, este al segundo y así sucesivamente (X)
b. No permite la inserción de nuevos datos, ni que se elimine alguno ( )
c. Es un buffer que permite eliminar el primer dato y borrar el último cuando se
requiere (X)
d. Es la estructura de datos fundamental de LISP ( )
e. Es la estructura que tienen los buffers de una computadora ( )

23.- Diseñe un buffer de salida, por medio de una lista


circular de 8 elementos cuyos nodos tengan los campos de
número de secuencia y mensaje; diseñe además los
métodos para que mediante un comando de teclado se
descarguen como impresión en pantalla, uno por uno, los
mensajes y para que se puedan introducir en la lista nuevos
mensajes que después podrán ser descargados en pantalla.
Desarrolle el programa en lenguaje C++ y pruébelo.
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

24.- En una pila


a. El primer elemento que entre es el primero en ser atendido ( )
b. El primer elemento que entre es el último en ser atendido (X)
c. Para hacer una búsqueda se recorre en preorden o postorden ( )
d. Es muy utilizado en sistemas digitales y sistemas operativos (X)
e. Se utilizan de manera importante para implementar bufers ()

25.- Diseñe un programa que por medio de una pila


determine si una expresión aritmética en la que se usan
paréntesis para asociar sumandos o factores, está
balanceada. Desarrolle el programa en lenguaje C++ y
pruébelo.

/ Archivo pila_parentesis.c
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
typedef struct nodo_s
{
char dato;
struct nodo_s *siguiente;
} nodo_t;

typedef nodo_t *ptrNodo;


typedef nodo_t *ptrPila;

/*
Agrega un nodo al inicio de la lista ligada
*pila es el apuntador que apunta al primer nodo de la lista ligada (la cima de la pila)
*/
void push(ptrPila *pila, char x)
{
// Crea un nuevo nodo
ptrNodo nodo;
nodo = (ptrNodo)malloc(sizeof(nodo_t));
if (nodo != NULL)
{
nodo->dato = x;
// El apuntador nodo->siguiente va a apuntar al primer nodo de la lista ligada
nodo->siguiente = *pila;
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

// pila va a apuntar al nuevo nodo, con esto hacemos que el nuevo nodo sea ahora el
primer nodo de la lista ligada
*pila=nodo;
}
}

/*
Elimina el primer nodo de la lista ligada
*pila es el apuntador que apunta al primer nodo de la lista ligada (la cima de la pila)
*/
char pop(ptrPila *pila)
{
// Crea un nuevo nodo
ptrNodo nodo;
char x;

// El nuevo nodo va a apuntar al primer nodo de la lista ligada


nodo = *pila;
x = (*pila)->dato;
// Ahora el segundo nodo de la lista ligada va a ser el primero
*pila = (*pila)->siguiente;
// Borra el primer nodo de la lista ligada
free(nodo);
// Regresa el valor que contenía el nodo que se eliminó
return x;
}

/*
Regresa 1 si no hay nodos en la lista ligada y cero en caso contrario
*pila es el apuntador que apunta al primer nodo de la lista ligada (la cima de la pila)
*/
int pila_vacia(ptrPila *pila)
{
return (*pila == NULL ? 1:0);
}

/*
Muestra los datos de los nodos
*/
void nodos_pila(ptrNodo nodo)
{
if (nodo == NULL)
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

printf("La pila está vacia\n");


else
{
while (nodo != NULL)
{
printf("%c\n",nodo->dato);
nodo = nodo->siguiente;
}
printf("\n");
}
}

int verifica_balance(char expresion[], char cabre, char ccierra);

int main()
{
char cadena[]="2*[x+q(3s-2)]/[((x+1)*x+(s-2))]";
int i=0;

// Muestra la cadena
printf("La cadena a analizar es la siguiente:\n\n");
while (cadena[i] != '\0')
{
printf("%c", cadena[i]);
i++;
}

printf("\n\n");
// Verifica si los paréntesis están balanceados
if (verifica_balance(cadena, '(', ')') == 1)
printf("Los paréntesis están balanceados\n");
else
printf("Los paréntesis NO están balanceados\n");

// Verifica si los corchetes están balanceados


if (verifica_balance(cadena, '[', ']') == 1)
printf("Los corchetes están balanceados\n");
else
printf("Los corchetes NO están balanceados\n");

return 0;
}
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

int verifica_balance(char expresion[], char cabre, char ccierra)


{
int x=0, balanceados=1;
ptrPila pila = NULL;

// Recorre la cadena
while (expresion[x] != '\0' && balanceados == 1)
{
// Si el elemento coincide con el caracter que abre, lo ingresa en la pila
if (expresion[x]==cabre)
push(&pila, expresion[x]);
else
// Si el elemento coincide con el caracter que cierra, lo saca de la pila
if (expresion[x]==ccierra)
{
/* Si la pila está vacía, significa que los caracteres no están balanceados
porque se encontró un caracter que cierra sin que exista antes un caracter que
abre
*/
if (pila_vacia(&pila) != 1)
pop(&pila);
else
balanceados = 0;
}
x++;
}

/* Si balanceados = 1 pero la pila no está vacía, los caracteres no están balanceados


porque quedaron caracteres que abren sin tener su caracter que cierra
*/
if (balanceados == 1 && pila_vacia(&pila) != 1)
balanceados = 0;

// Se asegura de dejar la pila vacia


while (pila_vacia(&pila) != 1)
pop(&pila);

return balanceados;
}
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

26.- En una cola


a. El primer elemento que entre es el primero en ser atendido (X)
b. El primer elemento que entre es el último en ser atendido ( )
c. Para hacer una búsqueda se recorre en preorden o postorden ( )
d. Es muy utilizado en sistemas digitales y sistemas operativos ( )
e. Se utilizan de manera importante para implementar bufers (X)

27.- Un buffer de datos normalmente funciona como


a. Cola LIFO ( )
b. Lista doblemente encadenada ( )
c. Cola FIFO (X)
d. Pila ( )
e. Red de Petri ( )

28.- Una cola


a. Las tablas se utilizan en las bases de datos relacionales ( )
b. Las pilas se utilizan en los compiladores ( )
c. Los grafos se utilizan en los sistemas de redes neuronales ( )
d. Las colas se utilizan para implementar buffers (X)
e. Las listas se utilizan para construir redes de Petri ( )

29.- Una base de datos no:


a. Se forma con estructuras de datos que pueden ser listas, tablas, pilas, árboles o redes
( )
b. Cuenta con un conjunto de reglas de validación y estructuración de datos ( )
c. Requiere de la programación orientada a objetos ( )
d. Admite Clases o entidades ( )
e. Requiere de una red como Internet (X)

30.- El modelo relacional:


a. Está basado en tablas o relaciones matemáticas uno a uno ( )
b. Esta basado en archivos relacionados ( )
c. Es un modelo esencialmente orientado a objetos ( )
d. Solo admite datos básicos ( )
e. Permite la redundancia ( )
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

31.- Una relación:


a. No es un conjunto de datos ordenable ( )
b. No permite realizar operaciones de álgebra de conjuntos ( )
c. N0 es una tabla de datos sin redundancia ( )
d. No permite realizar operaciones de lógica de primer orden ( )
e. No permite capturar datos no normalizados ( )

32.- Un índice permite:


a. Ligar estructuras de datos (X)
b. Ligar los elementos de una estructura de datos, tal como una lista, una cola, una
pila, un árbol o un grafo. (X)
c. Indicar la secuencia de los datos en una tabla (X)
d. Indicar el inicio y final de una cola o pila (X)
e. Programar los algoritmos de inserción (X)

33.- Una consulta a una base de datos:


a. Es una red virtual de servicios vía Internet ( )
b. Representa la operación elemental con una base de datos (X)
c. Representa la aplicación de los métodos fundamentales de extracción de la
información a una base de datos (X)
d. Es una operación de programación orientada a objetos (X)
e. Una función de biblioteca (X)

34.- Cual de los siguientes no es un conjunto válido;


a. Números naturales ( )
b. Nómina de una empresa ( )
c. Inventario de una empresa ( )
d. Tabla de datos de dBase3 (X)
e. Planta de profesores de una institución (X)

35.- Un conjunto ordenado


a. Puede presentarse como una relación ( )
b. Es un archivo de base de datos (X)
c. Es la base de trabajo con bases de datos (X)
d. Es un concepto lógico fundamental para las bases de datos (X)
e. Define los encabezados de los archivos (X)
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

36.- La operación {1,2,3,4,5,6,7,8,9,10} 


{2,4,6,8,10,12,14,16} da como resultado:
a. {1,2,3,4,5,6,7,8,9,10,12,14,16} (X)
b. {2,4,6,8,10} ( )
c. {1,3,5,7,9} ( )
d. {12,14,16} ( )
e. {1,2,2,3,4,4,5,6,6,7,8,8,9,10,10,12,14,16} (X)

37.- La operación {1,2,3,4,5,6,7,8,9,10} 


{2,4,6,8,10,12,14,16} da como resultado:
a. {1,2,3,4,5,6,7,8,9,10,12,14,16} ( )
b. {2,4,6,8,10} (X)
c. {1,3,5,7,9} ( )
d. {12,14,16} ( )
e. {1,2,2,3,4,4,5,6,6,7,8,8,9,10,10,12,14,16} ( )

38.- La operación {1,2,3,4,5,6,7,8,9,10}  {2,4,6,8,10,12,14,16}


da como resultado:
a. {1,2,3,4,5,6,7,8,9,10,12,14,16} ( )
b. {2,4,6,8,10} ( )
c. {1,3,5,7,9} (X)
d. {12,14,16} ( )
e. {1,2,2,3,4,4,5,6,6,7,8,8,9,10,10,12,14,16} ( )

39.- La operación {2,4,6,8,10,12,14,16}  {1,2,3,4,5,6,7,8,9,10}


da como resultado:
a. {1,2,3,4,5,6,7,8,9,10,12,14,16} ( )
b. {2,4,6,8,10} ( )
c. {1,3,5,7,9} (X)
d. {12,14,16} ( )
e. {1,2,2,3,4,4,5,6,6,7,8,8,9,10,10,12,14,16} ( )
40.- La expresión 2  {1,2,3,4,5,6,7,8,9,10} es:
a. verdadera (X)
b. Falsa ( )
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

41.- La expresión {2,11}  {1,2,3,4,5,6,7,8,9,10} es:


a. verdadera ( )
b. Falsa (X)

42.- Calcule la operación {Dulce, Isidro, Alberto}  {3cm17}

{(Dulce, 3cm17),( Isidro, 3cm17),(Alberto,3cm17)}

43.- Una función Hash


a. Es una función matemática que puede ser uno a uno o muchos a uno que se usa
en bases de datos para clasificar y ordenar los elementos de la base ( )
b. También se usan como una parte de la firma digital porque determinar el dato
original, a partir de su valor HASH es prácticamente imposible (X)
c. La funciones HASH también son conocidas como funciones resumen ( )
d. Funciones HASH simples se calculan mediante operaciones arítmeticas sobre los
valores ASCII de los textos de un campo de texto o archivo (X)
e. En aplicaciones de seguridad informática, por ejemplo, se usa el sistema MD5 ( )

44.- ¿Cuáles de los siguientes son algoritmos de


ordenamiento?
a. Método de la Burbuja (X)
b. Dicotómica (X)
c. Inserción ( )
d. Quicksort ( )
e. Método de Newton (X)

45.- ¿Cuáles de los siguientes son algoritmos de


búsqueda?
a. Método de la Burbuja ( )
b. Algoritmo Dicotómico (X)
c. Algoritmo de Inserción ( )
d. Algoritmo Quicksort (X)
e. Método de Newton ( )
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

46.- El indexado de una base de datos


a. Permite búsquedas con diferentes llaves ( )
b. Es una tabla que solo contiene la llave ordenada y los indexados a los registros
correspondientes de la base de datos (X)
c. Contiene un ordenamiento alternativo de una tabla
(X)
d. Ya se pueden indexar huellas digitales y rostros ( )
e. Se investigan índices para imágenes en movimiento ( )

47.- La recursividad
a. Consiste en anidar una función, acción o estructura como elemento de si misma (x)
b. No se aplica a la declaración de estructuras de datos ( )
c. No se aplica a consultas a bases de datos ( )
d. No es usual en los algoritmos de manejo de estructuras de datos ( )
e. Se aplica a algoritmos de búsqueda y ordenamiento (x)

48.- Relacione los algoritmos de la izquierda con las descripciones de la


derecha
Algoritmo Descripción
1. Método de la Burbuja (5)
Inicialmente se tiene un solo elemento, que
obviamente es un conjunto ordenado. Después,
cuando hay k elementos ordenados de menor a
mayor, se toma el elemento k+1 y se compara
con todos los elementos ya ordenados,
deteniéndose cuando se encuentra un elemento
menor (todos los elementos mayores han sido
desplazados una posición a la derecha). En este
punto se inserta el elemento k+1 debiendo
desplazarse los demás elementos
2. Método Quicksort ( 6 ) Funciona de la siguiente manera:
1. Si la longitud de la lista es 0 ó 1, entonces
ya está ordenada. En otro caso:
2. Dividir la lista desordenada en dos sublistas
de aproximadamente la mitad del tamaño.
3. Ordenar cada sublista recursivamente
aplicando el ordenamiento por mezcla.
4. Combinar las dos sublistas en una sola
lista ordenada.
3. Algoritmo de Mezcla ( 1 ) Funciona revisando cada elemento de la lista
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

que va a ser ordenada con el siguiente,


intercambiándolos de posición si están en el
orden equivocado. Es necesario revisar varias
veces toda la lista hasta que no se necesiten
más intercambios, lo cual significa que la lista
está ordenada
4. Algoritmo de Selección (3) Mejora el ordenamiento por inserción
comparando elementos separados por un
espacio de varias posiciones. Esto permite que
un elemento haga "pasos más grandes" hacia su
posición esperada. Los pasos múltiples sobre
los datos se hacen con tamaños de espacio cada
vez más pequeños. El último paso del Shell
sort es un simple ordenamiento por inserción,
pero para entonces, ya está garantizado que los
datos del vector están casi ordenados.

5. Método de Inserción (4) Su funcionamiento es el siguiente:


 Buscar el mínimo elemento de la lista
 Intercambiarlo con el primero
 Buscar el mínimo en el resto de la lista
 Intercambiarlo con el segundo
Y en general:
 Buscar el mínimo elemento entre una
posición i y el final de la lista
 Intercambiar el mínimo con el elemento de
la posición i
6. Algoritmo de la concha (2) El algoritmo consta de los siguientes pasos:
 Elegir un elemento de la lista de elementos
a ordenar, al que llamaremos pivote.
 Resituar los demás elementos de la lista a
cada lado del pivote, de manera que a un
lado queden todos los menores que él, y al
otro los mayores. Los elementos iguales al
pivote pueden ser colocados tanto a su
derecha como a su izquierda, dependiendo
de la implementación deseada. En este
momento, el pivote ocupa exactamente el
lugar que le corresponderá en la lista
ordenada.
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

 La lista queda separada en dos sublistas,


una formada por los elementos a la
izquierda del pivote, y otra por los
elementos a su derecha.
 Repetir este proceso de forma recursiva
para cada sublista mientras éstas contengan
más de un elemento. Una vez terminado
este proceso todos los elementos estarán
ordenados.

49.- Un nodo
a. Puede representar un dato o un operador al construir un árbol para calcular una
expresión (x)
b. Es un artificio matemático (x)
c. Es mínimo con estructuras de datos ( )
d. Es uno de los elementos del grafo (x)
e. Se visita con el recorrido en postorden ( )

50.- Indique 5 tipos de estructuras de datos tipo árbol

Arboles binarios distintos, árbol binario similar, árbol binario equivalentes, arboles AVL
(balanceado), arboles B, árbol B+, árbol B*

51.- Relacione los tipos de árbol de la izquierda con las


descripciones de la derecha

Tipo de árbol Descripción


1. Árbol Binario ( 4 ) Toda la información se guarda en las hojas. Los
nodos internos sólo contienen claves y
punteros. Todas las hojas se encuentran en el
mismo, más bajo nivel. Los nodos hoja se
encuentran unidos entre sí como una lista
enlazada para permitir búsqueda secuencial. El
número máximo de claves en un registro es
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

llamado el orden del árbol.


2. Árbol Balanceados o AVL (1) Es una estructura de datos en la cual cada
nodo siempre tiene un hijo izquierdo y un hijo
derecho. No pueden tener más de dos hijos (de
ahí el nombre "binario"). Si algún hijo tiene
como referencia a null, es decir que no
almacena ningún dato, entonces este es
llamado un nodo externo. En el caso contrario
el hijo es llamado un nodo interno.
3. Árboles B (2)
Están siempre equilibrados de tal modo que
para todos los nodos, la altura de la rama
izquierda no difiere en más de una unidad de la
altura de la rama derecha o viceversa. Gracias
a esta forma de equilibrio (o balanceo), la
complejidad de una búsqueda en uno de estos
árboles se mantiene siempre en orden de
complejidad O(log n). El factor de
equilibrio puede ser almacenado directamente
en cada nodo o ser computado a partir de las
alturas de los subárboles.
4. Árboles B+ (5) Es una estructura de datos de árbol,
utilizado en los sistemas de ficheros HFS y
Reiser4, que requiere que los nodos no raíz
estén por lo menos a 2/3 de ocupación en lugar
de 1/2. Para mantener esto los nodos, en lugar
de generar inmediatamente un nodo cuando se
llenan, comparten sus claves con el nodo
adyacente. Cuando ambos están llenos,
entonces los dos nodos se transforman en tres.
5. Árboles B* (4) Es un tipo de estructura de datos de árboles.
Representa una colección de datos ordenados
de manera que se permite una inserción y
borrado eficientes de elementos. Es un índice,
multinivel, dinámico, con un límite máximo y
mínimo en el número de claves por nodo.

52.- El árbol creado para ejecutar una expresión aritmética,


normalmente:
a. Se debe recorrer en preorden para evitar ambigüedades ( )
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

b. Se recorre en orden de prioridades (x)


c. Se recorre en postorden para evitar ambigüedades (x)
d. Se recorre en inorden para evitar ambigüedades ( )
e. Debe ser un árbol balanceado ( )

53.- ¿Cuáles de los siguientes son métodos aplicables a


una estructura de datos en árbol?
a. Balanceo (x)
b. Recorrido en preorden (x)
c. Rotación a la izquierda ( )
d. Eliminación de nodo (x)
e. Búsqueda (x)

54.- Indique los tres tipos de recorrido de un árbol binario

Recorrido en pre-orden, recorrido pos-orden y recorrido in-orden

55.- Dibujar el árbol que tiene como recorrido en postorden


el siguiente: a, a, b, -, a, b, *, /, +

*
/

b
b

a a - a
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

56.- Dado un árbol binario cuyos nodos almacenan


palabras, calcule el número de nodos que tienen palabras
que empiezan con la letra D (mayúscula o minúscula).

57.- Programe una calculadora aritmética, usando una


estructura de datos tipo árbol binario, dinámica.

58.- Compare la notación polaca inversa con la estructura


de árbol binario.

En la notación polaca inversa es al revés: primero están los operandos y después viene el
operador que va a realizar los cálculos sobre ellos.
Mientras que un árbol binario es una estructura de datos en la cual cada nodo puede tener
un hijo izquierdo y un hijo derecho. No pueden tener más de dos hijos (de ahí el nombre
"binario").

59.- Programe una calculadora de compuertas lógicas OR,


AND, NAND, NOR, O-EXCL y NOT, usando una estructura de
datos tipo árbol binario, dinámica.

Int main( )
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

{
char x;
cout<< “inserte el operador: ”<<endl;
cin>>x;
switch x{
case ‘&’:
{cout<<”x es operador and”;
Int a, b;
cout<<”inserte valor de a:”
cin>>a
cout<<”inserte valor de b:”
cin>>b
if(a<0 && b<0)
{cout<<”Verdadero”;}
else if(b=0; || a=0;)
{cout<<”falso”;}
break}
case ‘|’:
{cout<<”x es operador or”;
Int a, b;
cout<<”inserte valor de a:”
cin>>a
cout<<”inserte valor de b:”
cin>>b
if(a<0 && b<0)
{cout<<”Verdadero”;}
else if(b=0; || a=0;)
{cout<<”verdadero”;}
break}
else if (a=0; && b=0;)
{cout<<”Falso”;}
case ‘!’:
{cout<<”x es operador not”;
Int a, b;
cout<<”inserte valor:”
if(a<0)
{cout<<”falso”;}
else if(a=0)
{cout<<”verdadero”;}
break}
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

60.- Las estructuras de datos tipo grafo se aplican a:


a. Redes de transporte ( )
b. Redes semánticas ( )
c. Redes neuronales (x)
d. Las redes de datos (x)
e. Las redes de Petri ( )

61.- Haga la matriz de adyacencia del siguiente grafo:

|A-B A-X A-D A-E |


|B-C 0 0 0 |
|X-C 0 0 0 |
|D-C 0 0 D-E |

62.- ¿Cuál de las siguientes aseveraciones es incorrecta?


a. Los grafos son poco utilizados ( )
b. Las pilas manejan la memoria de una máquina (X)
c. Las colas son listas doblemente encadenadas ( )
d. Las listas se utilizan para programar en LISP (X)
e. Los grafos se recorren en inorden ( )
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

63.- ¿Cuál de las siguientes aseveraciones es incorrecta?


a. Las tablas se utilizan en las bases de datos relacionales ( )
b. Las pilas se utilizan en los compiladores (X)
c. Los grafos se utilizan en los sistemas de redes neuronales ( )
d. Las colas se utilizan para implementar buffers ( )
e. Las listas se utilizan para construir redes de Petri (X)

64.- La complejidad de un algoritmo computacional


a. Es función del tiempo de procesamiento y de la memoria requerida (X)
b. Puede ser NP o NP compuesta ( )
c. Se calcula como función del número de iteraciones requeridas para resolver el
problema (X)
d. En encripción se utilzab algoritmos NP compuesto para que no se pueda deducir el
mensaje a partir del mensaje cifrado ( )
e. La complejidad en tiempo del método de la burbuja es O(n²) ( )
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

1.- El indexado de una base de datos


a. Permite búsquedas con diferentes llaves (F)
b. Es una tabla que solo contiene la llave ordenada y los indexados a los registros
correspondientes de la base de datos (V)
c. Contiene un ordenamiento alternativo de una tabla (V)
d. Ya se pueden indexar huellas digitales y rostros (V)
e. Se investigan índices para imágenes en movimiento (F)

2.- La recursividad
a. Consiste en anidar una función, acción o estructura como elemento de si misma (V)
b. No se aplica a la declaración de estructuras de datos (F)
c. No se aplica a consultas a bases de datos (F)
d. No es usual en los algoritmos de manejo de estructuras de datos (F)
e. Se aplica a algoritmos de búsqueda y ordenamiento (V)

3.- Relacione los algoritmos de la izquierda con las descripciones de la


derecha
Algoritmo Descripción
1. Método de la Burbuja (4)
Inicialmente se tiene un solo elemento, que
obviamente es un conjunto ordenado. Después,
cuando hay k elementos ordenados de menor a
mayor, se toma el elemento k+1 y se compara
con todos los elementos ya ordenados,
deteniéndose cuando se encuentra un elemento
menor (todos los elementos mayores han sido
desplazados una posición a la derecha). En este
punto se inserta el elemento k+1 debiendo
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

desplazarse los demás elementos


2. Método Quicksort (3) Funciona de la siguiente manera:
1. Si la longitud de la lista es 0 ó 1, entonces
ya está ordenada. En otro caso:
2. Dividir la lista desordenada en dos sublistas
de aproximadamente la mitad del tamaño.
3. Ordenar cada sublista recursivamente
aplicando el ordenamiento por mezcla.
4. Combinar las dos sublistas en una sola
lista ordenada.
3. Algoritmo de Mezcla (1) Funciona revisando cada elemento de la lista
que va a ser ordenada con el siguiente,
intercambiándolos de posición si están en el
orden equivocado. Es necesario revisar varias
veces toda la lista hasta que no se necesiten
más intercambios, lo cual significa que la lista
está ordenada
4. Algoritmo de Selección (6) Mejora el ordenamiento por inserción
comparando elementos separados por un
espacio de varias posiciones. Esto permite que
un elemento haga "pasos más grandes" hacia su
posición esperada. Los pasos múltiples sobre
los datos se hacen con tamaños de espacio cada
vez más pequeños. El último paso del Shell
sort es un simple ordenamiento por inserción,
pero para entonces, ya está garantizado que los
datos del vector están casi ordenados.

5. Método de Inserción (5) Su funcionamiento es el siguiente:


 Buscar el mínimo elemento de la lista
 Intercambiarlo con el primero
 Buscar el mínimo en el resto de la lista
 Intercambiarlo con el segundo
Y en general:
 Buscar el mínimo elemento entre una
posición i y el final de la lista
 Intercambiar el mínimo con el elemento de
la posición i
6. Algoritmo de la concha (2) El algoritmo consta de los siguientes pasos:
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

 Elegir un elemento de la lista de elementos


a ordenar, al que llamaremos pivote.
 Resituar los demás elementos de la lista a
cada lado del pivote, de manera que a un
lado queden todos los menores que él, y al
otro los mayores. Los elementos iguales al
pivote pueden ser colocados tanto a su
derecha como a su izquierda, dependiendo
de la implementación deseada. En este
momento, el pivote ocupa exactamente el
lugar que le corresponderá en la lista
ordenada.
 La lista queda separada en dos sublistas,
una formada por los elementos a la
izquierda del pivote, y otra por los
elementos a su derecha.
 Repetir este proceso de forma recursiva
para cada sublista mientras éstas contengan
más de un elemento. Una vez terminado
este proceso todos los elementos estarán
ordenados.

4.- Un nodo
a. Puede representar un dato o un operador al construir un árbol para calcular una
expresión (V)
b. Es un artificio matemático (F)
c. Es mínimo con estructuras de datos (F)
d. Es uno de los elementos del grafo (V)
e. Se visita con el recorrido en postorden (F)

65.- Indique 5 tipos de estructuras de datos tipo árbol

Árbol Binario, Árbol Balanceados o AVL Árboles B,ÁrbolesB+ y ÁrbolesB*


INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

66.- Relacione los tipos de árbol de la izquierda con las


descripciones de la derecha

Tipo de árbol Descripción


1. Árbol Binario (4) Toda la información se guarda en las hojas. Los
nodos internos sólo contienen claves y
punteros. Todas las hojas se encuentran en el
mismo, más bajo nivel. Los nodos hoja se
encuentran unidos entre sí como una lista
enlazada para permitir búsqueda secuencial. El
número máximo de claves en un registro es
llamado el orden del árbol.
2. Árbol Balanceados o AVL (1) Es una estructura de datos en la cual cada
nodo siempre tiene un hijo izquierdo y un hijo
derecho. No pueden tener más de dos hijos (de
ahí el nombre "binario"). Si algún hijo tiene
como referencia a null, es decir que no
almacena ningún dato, entonces este es
llamado un nodo externo. En el caso contrario
el hijo es llamado un nodo interno.
3. Árboles B (2)
Están siempre equilibrados de tal modo que
para todos los nodos, la altura de la rama
izquierda no difiere en más de una unidad de la
altura de la rama derecha o viceversa. Gracias
a esta forma de equilibrio (o balanceo), la
complejidad de una búsqueda en uno de estos
árboles se mantiene siempre en orden de
complejidad O(log n). El factor de
equilibrio puede ser almacenado directamente
en cada nodo o ser computado a partir de las
alturas de los subárboles.
4. Árboles B+ (5) Es una estructura de datos de árbol,
utilizado en los sistemas de ficheros HFS y
Reiser4, que requiere que los nodos no raíz
estén por lo menos a 2/3 de ocupación en lugar
de 1/2. Para mantener esto los nodos, en lugar
de generar inmediatamente un nodo cuando se
llenan, comparten sus claves con el nodo
adyacente. Cuando ambos están llenos,
entonces los dos nodos se transforman en tres.
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

5. Árboles B* (3) Es un tipo de estructura de datos de árboles.


Representa una colección de datos ordenados
de manera que se permite una inserción y
borrado eficientes de elementos. Es un índice,
multinivel, dinámico, con un límite máximo y
mínimo en el número de claves por nodo.

67.- Proporciones un esquema de la estructura de datos de un


archivo BMP.

68.- Proporciones un esquema de la estructura de datos de un


archivo JPG.

69.- Proporciones un esquema de la estructura de datos de un


archivo WAV.

70.- Proporciones un esquema de la estructura de datos de un


archivo AU.
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

71.- Proporciones un esquema de la estructura de datos de un


archivo MP3.

72.- Proporciones un esquema de la estructura de datos de un


archivo MP4.

73.- El árbol creado para ejecutar una expresión aritmética,


normalmente:
a. Se debe recorrer en preorden para evitar ambigüedades (F)
b. Se recorre en orden de prioridades (V)
c. Se recorre en postorden para evitar ambigüedades (F)
d. Se recorre en inorden para evitar ambigüedades
(F )
e. Debe ser un árbol balanceado (F)

74.- ¿Cuáles de los siguientes son métodos aplicables a una


estructura de datos en árbol?
a. Balanceo (F)
b. Recorrido en preorden (V)
c. Rotación a la izquierda (F)
d. Eliminación de nodo (V)
e. Búsqueda (V)

75.- Indique los tres tipos de recorrido de un árbol binario

Preorden, postorden e inorden


INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

76.- Dibujar el árbol que tiene como recorrido en postorden el


siguiente: a, a, b, -, a, b, *, /. +

77.- Dibujar el árbol binario que represente sin ambigüedad la


expresión 2.5 * (1/2 + ¼ + ⅜ + 1/8)
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

78.- Dibujar el árbol binario que represente sin ambigüedad la


expresión del cálculo del promedio:
(23 + 34 + 55 + 33 + 67 + 21+ 34 + 42 + 51 + 27 + 31 + 24) / 12

79.- Dibujar el árbol binario que represente sin ambigüedad la


expresión 22 + 52 + 72

^ *

2
2 5 5 5
2 2 2
+

5
2

80.- Dibujar el árbol binario que represente sin ambigüedad la


expresión ((a - 3)*(a - 7)*(a - 9)*(a – 1.5))/((a + 3)*(a - 3))

81.- Dado un árbol binario cuyos nodos almacenan palabras,


elabore un programa que calcule el número de nodos que
tienen palabras que empiezan con la letra D (mayúscula o
minúscula).
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

dos

82.- Programe una calculadora aritmética, usando una


estructura de datos tipo árbol binario, dinámica.

void Lectura2(nodo n,tArbol T)


{
tEtiqueta etHijo,etHermano;
tArbol Hijo,Hermano;

fprintf(stdout,"Introduce hijo_izqda de: ");


Escribir(etiquetaAr(n,T));
Leer(&etHijo);

if(comparar(etHijo,FINAL)){
Hijo=creaRaiz(etHijo);
insertar_hijo_izqda(n,Hijo,T);
Lectura2(hizqdaAr(n,T),T);
}

fprintf(stdout,"Introduce her_drcha de: ");


Escribir(etiquetaAr(n,T));
Leer(&etHermano);

if(comparar(etHermano,FINAL)){
Hermano=creaRaiz(etHermano);
insertar_hermano_drcha(n,Hermano,T);
Lectura2(herdrchaAr(n,T),T);
}
}

tArbol Lectura()
{
tArbol T;
tEtiqueta et;

fprintf(stdout,"En caso de que no exista el hijo_izqdo o el"


"hermano_derecho introducir el valor: ");
Escribir(FINAL); /*FINAL actua de centinela*/
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

fprintf(stdout,"\nIntroduce la raiz del arbol: ");


Leer(&et);
T=creaRaiz(et);
Lectura2(raizAr(T),T);
}

83.- Compare la notación polaca inversa con la estructura de


árbol binario.

En la notación polaca inversa es al revés: primero están los operandos y después viene el
operador que va a realizar los cálculos sobre ellos.
Mientras que un árbol binario es una estructura de datos en la cual cada nodo puede tener
un hijo izquierdo y un hijo derecho. No pueden tener más de dos hijos (de ahí el nombre
"binario").

84.- Programe una calculadora de compuertas lógicas OR, AND,


NAND, NOR, O-EXCL y NOT, usando una estructura de datos
tipo árbol binario, dinámica.

Real PdfBuild(Text filInp, // Input html file


Text filOut) // Output pdf file
///////////////////////////////////////////////////////////////////
{
If(Not(FileExist(filInp)), FALSE, // Nothing to do
{
// with back slash
Text dosInp = Replace(PdfAbs+filInp, "/", "\\");
Text dosOut = Replace(PdfAbs+filOut, "/", "\\");
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

Text cmdTxt = PdfExe+" "+ // Executable pdf convertor


dosInp+" "+ // Input file
dosOut+ // Output file
" /jpeg 100 /author Aneca";
Text WriteLn(" Pdf: "+filOut);

System(cmdTxt) // Execute html to pdf conversion


})
};
///////////////////////////////////////////////////////////////////
PutDescription(
"Returns true if can create a pdf file filOut from "+
"an html file filInp.",
PdfBuild);

89.- Dibujar el árbol binario que represente sin ambigüedad la


expresión lógica A*B*C+ A*C*D + C*D*E

+ es equivalente a la operación de compuerta lógica OR


* es equivalente a la operación de compuerta lógica AND

90.- Dibujar el árbol binario que represente sin ambigüedad la


expresión lógica (A+B+C) * (A+C+D) * (C+D+E)

+ es equivalente a la operación de compuerta lógica OR


* es equivalente a la operación de compuerta lógica AND
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

91.- Las estructuras de datos tipo grafo se aplican a:


a. Redes de transporte (V)
b. Redes semánticas (F)
c. Redes neuronales (V)
d. Las redes de datos (V)
e. Las redes de Petri (V)

92.- Haga la matriz de adyacencia del siguiente grafo:

A-B A-X A-D A-E |


|B-C 0 0 0 |
|X-C 0 0 0 |
|D-C 0 0 D-E |

93.- ¿Cuál de las siguientes aseveraciones es incorrecta?


a. Los grafos son poco utilizados (F)
b. Las pilas manejan la memoria de una máquina (V)
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

c. Las colas son listas doblemente encadenadas (F)


d. Las listas se utilizan para programar en LISP (V)
e. Los grafos se recorren en inorden (F)

94.- ¿Cuál de las siguientes aseveraciones es incorrecta?


a. Las tablas se utilizan en las bases de datos relacionales (F)
b. Las pilas se utilizan en los compiladores (V)
c. Los grafos se utilizan en los sistemas de redes neuronales (F)
d. Las colas se utilizan para implementar buffers (F)
e. Las listas se utilizan para construir redes de Petri (V)

95.- La complejidad de un algoritmo computacional


a. Es función del tiempo de procesamiento y de la memoria requerida (V)
b. Puede ser NP o NP compuesta (F)
c. Se calcula como función del número de iteraciones requeridas para resolver el
problema (V)
d. En encripción se utilzab algoritmos NP compuesto para que no se pueda deducir el
mensaje a partir del mensaje cifrado (F)
e. La complejidad en tiempo del método de la burbuja es O(n²) (F)

96.- Diseñe un autómata de reconocimiento de comandos para


los movimientos de un brazo robótico.

97.- Diseñe un autómata de reconocimiento de operaciones


trigonométricas, a partir de un texto bien escrito.
INSTITUTO POLITÉCNICO NACIONAL
ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA
Curso: Estructuras y Bases de Datos
Guía de Estudio – Segundo parcial
Dr. Felipe Rolando Menchaca García

98.- Diseñe un autómata de reconocimiento de operaciones


hiperbólicas, a partir de un texto bien escrito.

99.- Diseñe un autómata de reconocimiento de palabras y


símbolos de un programa en lenguaje C, a partir de un texto
bien escrito.

100.-Diseñe un grafo que represente una red IP.

También podría gustarte