Professional Documents
Culture Documents
Instituto IACC
Utilizando DStool: Herramienta para la programación con estructuras de datos o una herramienta
similar realice las siguientes actividades.
1. Construya la siguiente lista enlazada de 10 nodos (5, 8, 2, 3, 23, 12, 34, 32, 11, 17) e
indicar claramente que sucede con la lista cuando:
a. Se elimina el nodo 23
b. Se inserta el nodo 7 entre el nodo 34 y 32
Para dar respuesta a la primera pregunta primero debemos confeccionar nuestra lista enlazada la
cual fue dada anteriormente y mediante la herramienta DStool lo graficaremos, en la cual nuestra
lista queda de la siguiente manera:
en la siguiente imagen muestra como queda nuestra lista enlazada, en donde si nos damos cuenta
nuestro nodo de inicio el nodo con valor 5, donde luego se comienza con insertar los demás
nodos, pero estos se van desplazando hacia la derecha haciendo que el último nodo de la lista sea
el nodo con valor 8, entonces nuestra lista queda en el siguiente orden: 5, 17, 11, 32, 34, 12, 23,
3, 8.
Eliminar el nodo 23
Para eliminar el nodo 23 de nuestra lista enlazada, lo que debemos hacer es pinchar en el icono
que dice Borrar, en donde nos aparecerá una lista con todos los nodos que tenemos hechos, como
se muestra en la siguiente imagen:
Luego seleccionamos el nodo a eliminar el cual es el 23 y le damos aceptar, una vez que
hacemos este paso el software nos preguntará si deseamos realmente eliminar el nodo 23, como
se muestra en la siguiente imagen:
Si estamos seguros que es el nodo a eliminar pinchamos en sí, y nos eliminará el nodo con valor
23, el cual es el que deseamos, y quedaría de la siguiente manera:
nos damos cuenta que ya nos elimino el nodo 23 y la lista se acomoda según sea el orden que se
necesite después de eliminar el nodo el orden obtenido es el siguiente: 5, 17, 11, 32, 34, 12, 3, 2,
8.
Insertar el nodo 7 entre el nodo 34 y 32
En las listas enlazadas al momento de realizar un inserto lo realiza al lado derecho de la del nodo
inicial , entonces procedemos a pinchar el botón que dice insertar el cual no da la opción de
ingresar un valor, como lo muestra la siguiente imagen:
en la cual le damos el valor que nosotros deseamos el cual es el 7, por ende como habíamos
dicho queda al lado derecho del nodo inicial el cual es el 5, en la siguiente imagen se refleja lo
dicho
Entonces una vez creada nuestro nodo nuevo valor 7, para poder ubicarlo entre el nodo 32 y
nodo 34 debemos modificar los enlaces que se ubican en lo nodos nombrados, en donde debemos
ubicar el nodo 7, en donde queda de la siguiente manera:
Por lo tanto esos son los pasos para que insertemos nuestros nodos entre medio de otros nodos.
Comenzamos a construir nuestra pila con los 10 elementos que nos dieron, en la cual nos damos
cuenta que su filosofía se cumple en la cual es el primero en entrar es el último en salir (FIFO),
en donde nuestra pila queda de la siguiente manera:
Insertar (Push)
Para insertar un elemento a la pila nos damos cuenta que toma la primera posición o se apila al
último elemento por ejemplo vamos a insertar un nuevo elemento en pila el cual va hacer el
elemento s, entonces este ocupa el último lugar de la pila como se a continuación:
Eliminar (POP)
esta operación consiste en eliminar el elemento mas cercano de la pila, en la cual vamos a utilizar
el mismo ejemplo dado anteriormente en la cual el elemento “s” de la pila será eliminado al
momento de hacer click en el icono de Pop, y nuestra pila queda de la siguiente manera:
3. Considere los siguientes elementos (5, 7, 9, 12, 16, 21, 23, 28, 31, 33). Explique de qué
forma se insertan y se sacan estos elementos de manera que el primero en entrar sea el
primero en salir. Identifique que estructura de datos es y cómo quedaría gráficamente.
Este tipo de estructura en la cual consiste en que el primero en entrar es el primero en salir este
concepto es llamado cola en donde su filosofía es la nombrada anteriormente, una vez que
tenemos identificada la estructura, la cual es cola procederemos a insertar los valores dados,
entonces nuestra cola queda de la siguiente manera:
una vez con nuestra cola ya hecha procederemos a realizar una inserción de un nuevo elemento
en este caso insertaremos el nodo con valor 44, en donde apretamos el botón insertar y nos
aparecerá otra ventana preguntándonos por el valor del nodo ha agregar, como se muestra en la
siguiente imagen:
una
vez agregada nuestro nuevo elemento, toma la ubicación del último en la fila y queda ubicado al
lado derecho del último nodo el cual es el 33, entonces ahora nuestro último nodo es el valor 44,
como muestra en la siguiente imagen:
una vez que insertamos el nuevo elemento donde el nodo 44 , queda como último elemento de la
cola, ahora procederemos a eliminar el nodo.Este paso consiste eliminar un nodo y según el
concepto de colas nombrados anteriormente el primer nodo como fue el primero en ingresar debe
ser el primero en salir, en este caso es el nodo valor 5, como nos muestra la siguiente imagen:
nos damos cuenta que si se cumple lo dicho anteriormente en donde presionamos el botón
eliminar y nos retira el nodo 5 el cual fue el primero en entrar y es el primero en salir,
cumpliendo el concepto de las colas.
#include
#include
#include
#include
struct nodoArbol {
struct nodoArbol *ptrIzq;
int dato;
struct nodoArbol *prtDer;
};
typedef struct nodoArbol NodoArbol;
typedef NodoArbol *ptrNodoArbol;
/* prototipos */
void insertaNodo( ptrNodoArbol *ptrArbol, int valor );
void inOrden( ptrNodoArbol ptrArbol );
void preOrden( ptrNodoArbol ptrArbol );
void postOrden( ptrNodoArbol ptrArbol );
int main(){
int i; /* contador para el ciclo de 1 a 10 */
int elemento; /* variable para almacenar valores al azar */
ptrNodoArbol ptrRaiz = NULL;
srand( time( NULL ) );
printf( "Los numeros colocados en el arbol son:n" );
/* inserta valores al azar entre 1 y 15 en el arbol */
for ( i = 1; i dato = valor;
( *ptrArbol )->ptrIzq = N ULL;
( *ptrArbol )->prtDer = N ULL;
} /* fin de if */
else {
printf( "no se inserto %d. No hay memoria
disponible.n", valor );
}
}
else { /* el arbol no esta vacio */
/* el dato a insertar es menor que el dato en el nodo
actual */
if ( valor dato ) {
insertaNodo( &( ( *ptrArbol )->ptrIzq ), valor
);
}
/* el dato a insertar es mayor que el dato en el nodo
actual */
else if ( valor > ( *ptrArbol )->dato ) {
insertaNodo( &( ( *ptrArbol )->prtDer ), valor
);
}
else { /* ignora el valor duplicado del dato */
printf( "# " ); // Imprime en valores duplicados
}
}
} /* fin de la funcion insertaNodo */
/* comienza el recorrido inorden del arbol */
void inOrden( ptrNodoArbol ptrArbol ){
/* si el arbol no esta vacio, entonces recorrelo */
if ( ptrArbol != NULL ) {
inOrden( ptrArbol->ptrIzq );
printf( "%3d", ptrArbol->dato );
inOrden( p trArbol->prtDer );
}
} /* fin de la f uncion inOrden */
Bibliografía
IACC (2014). Árboles Binarios de Búsqueda (ABB). Estructura de Datos. Semana 7.
2016. https://users.dcc.uchile.cl/~lmateu/Java/Transparencias/Compl/sort.htm
Victor D.L.R (Mayo, 2009). Crea un árbol binario y lo recorre en preorden, inorden, y en
en-y-en-postorden