UNIVERSIDAD TECNICA DE MANABIPARALELO- EL CARMENFACULTAD:INGENIERIA EN SISTEMAS
FACILITADOR:ING: ROCIO MENDOZAFACULTAD:4TO SISTEMASESTUDIANTES:MERLY ZAMBRANO PALACIOS
MERCY ZAMBRANO VERAESTRUCTURA DE DATOS
TEMA:LISTAS ABIERTAS
LISTAS CIRCULARES
PILAS
COLAS
MEMORIA ESTATICA
MEMORIA DINAMICA
ARBOL
TIPOS DE NODOS
TIPOS DE RECORRIDOS
ARBOLES BINARIOS
BALANCE DE ARBOLESTRUCTURA DE DATOS
LISTAS ABIERTASLa forma más simple de estructura dinámica es la lista abierta. En esta forma los nodos se organizan de modo que cada uno apunta al siguiente, y el último no apunta a nada, es decir, el puntero del nodo siguiente vale NULL.
INSERCIONInsertar un elemento en una lista vacía.Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL:
INSERCION UN ELEMENTO EN LA ÚLTIMA POSICIÓN DE UNA LISTAEJEMPLO:
LISTAS CIRCULARESUna lista circular es una lineal, en la que el ultimo elemento enlaza con el primero. Entonces es posible acceder a cualquier elemento de la lista desde cualquier punto dado. Las operaciones sobre una lista circular resultan mas sencillas, ya que se evitan casos especiales.Cuando recorremos una lista circular, diremos que hemos llegado al final de la misma, cuando nos encontramos de nuevo en el punto de partida; suponiendo, desde luego, que el punto de partida se guarda de alguna manera en la lista, por ejemploCon un puntero fijo al mismo.Otra posible solución al problema anterior sería poner en cada lista circular, un elemento especial identificable como lugar de parada. Este elemento especial recibe el nombre de elemento de cabecera de la lista. Esto presenta la ventaja de que la lista circular no estará nunca vacía.Una lista circular con un puntero al último elemento, es equivalentemente a una lista lineal recta con dos punteros, una al principio y otra al final
+++4+00                    +4                      -1                        0Listas CircularComo ejemplo de utilización de listas circulares, realizaremos la suma de ecuaciones algebraicas o polinómicas de las variables x, y, z.. Por ejemplo:2x³y + 4xy³- y⁴ más 2xy³-xyCada polinomio será representado como una lista en la que cada elemento representa un término nulo, como se indica a continuación:COEFICIENTESIGUIENTE
FUNCIONESLeer PolinomioLeer_ polinomio(&polP);Leer_ polinomio(&polQ);2.  InicializarInicializar(&polP);Inicializar(&polQ);3.  CompararComparar(&polP ,&polQ);Eliminar TérminosEliminar_Término(PolQ);5.  Escribir Polinomios Escribir_polinomio(polQ);
PILASUna pila cuenta con 2 operaciones imprescindibles, apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen añadir mas de uso habitualCREAR: Se crea la pila vacía
APILAR: Se añade un elemento a la pila (push)
DESAPILAR: Se elimina el elemento frontal de la pila(pop)
CIMA: Devuelve el elemento que esta en la cima de la pila(top o peek)
VACIA: Devuelve cierto si la pila esta vacía o falso en caso contrariocolasLa particularidad de una estructura de datos de cola es el hecho de que sólo podemos acceder al primer y al último elemento de la estructura. Así mismo, los elementos sólo se pueden eliminar por el principio y sólo se pueden añadir por el final de la cola.Ejemplos de colas en la vida real serían: personas comprando en un supermercado, esperando para entrar a ver un partido de béisbol, esperando en el cine para ver una película, una pequeña peluquería, etc. La idea esencial es que son todos líneas de espera.1.- Ejemplo de la cola1520918192.-vamos a insertar el 13 en la cola152091819133.-Sacamos al frente de la cola209181913
#ifndef COLA #define COLA // Define la cola template <class T> class Cola{        private:           struct Nodo{                T elemento;                struct Nodo* siguiente; // coloca el nodo en la segunda posición           }* primero;           struct Nodo* ultimo;            unsigned int elementos;       public:            Cola(){                    elementos = 0;             }            ~Cola(){                     while (elementos != 0) pop();              }            void push(const T& elem){             Nodo* aux = new Nodo;             aux->elemento = elem;            if (elementos == 0) primero = aux;            else ultimo->siguiente = aux;           ultimo = aux;           ++elementos; }           void pop(){           Nodo*   aux = primero;             primero = primero->siguiente;            delete aux;         --elementos; } T consultar() const{           return primero           ->elemento; } bool vacia() const{           return elementos == 0; } unsigned int size() const{          return elementos; } }; #endif COLAS
GRAFICO DE LISTAS ENLAZADAS
MEMORIA ESTATICAEs la forma más fácil de almacenarel contenido de una variableALMACENAMIENTOASIGNACIONPara que un objeto puedaser almacenado en memoria estática su tamaño ( numerode Bytes necesario para su almacenamiento)ha de ser conocido en tiempo de compilaciónLa asignaciocion dememoria puede hacerseen tiempo de compilacióny los objetos están vigentesdesde que comienza la ejecucion del programa hastaque termina
MANEJO DE MEMORIADINAMICAEs aquella que se reserva en tiempo de ejecución después de leer los datos y de conocer el tamaño exacto del problema a resolver. ALMACENAMIENTOa medida que el proceso va necesitando espacio para más líneas, va solicitando más memoria al sistema operativo para guardarlas. ASIGNACIONPrimer ajuste
Mejor ajuste
Peor ajusteLIBERACION DE MEMORIADINAMICA202020201488146688884444EL espacio de memoria se va llenando con diferentes “representando colores”, también pueden destruirse alguno de ellos, dejando “huecos” en el espacio de memoria, cuándo ya no quede espacio disponible o cuando decida la memoria “compacta”, colocando todos los objetos que se están usando al principio y consolidando todos los huecos de memoria al final quedando una gran área de memoria disponible para la creación de objetos
MEMORIA ESTATICAVENTAJASMemoria fija, asignada en el momento de compilación.
Fácil y rápido de almacenar datos.
Es una sola casilla secuencial DESVENTAJASEn algunos casos se puede desperdiciar memoria.
En otros casos puede ser que los datos sean mas grandes que el espacio asignado
Desperdicia espacio liberado
No se puede modificar su tamaño en la ejecuciónMEMORIA DINAMICAVENTAJASNo hay desperdicio de memoria.
Asigna el espacio correspondiente
Modifica el tamaño
No es secuencial
Utiliza un puntero para la ejecuciónDESVENTAJASEs más difícil de programar
Cuando tenemos un archivo mas grande que el espacio en memoria quedan inutilizados los espacios pequeñosARBOLCONCEPTO
Un árbol es una estructura de datos ampliamente usada que imita la forma de un árbol (un conjunto de nodos conectados).EYT$OULL$$$OA$$GRAFICO DE ARBOL
DEFINICION DE NODOS:Un nodo, en informática, es un componente que forma parte de una red. En Internet, cada servidor constituye un nodo. Las computadoras que forman parte de una red también son nodos
TIPOS DE NODONodo: Un nodo es la unidad sobre la que se construye el árbol y puede tener cero o más nodos hijos conectados a él. Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del árbol. En el ejemplo, 'L' y 'M' son hijos de 'G'. Nodo padre: nodo que contiene un puntero al nodo actual. En el ejemplo, el nodo 'A' es padre de 'B', 'C' y 'D'. Nodo raíz: nodo que no tiene padre. Este es el nodo que usaremos para referirnos al árbol. En el ejemplo, ese nodo es el 'A'. Nodo hoja: nodo que no tiene hijos. En el ejemplo hay varios: 'F', 'H', 'I', 'K', 'L', 'M', 'N' y 'O'. Nodo rama: aunque esta definición apenas la usaremos, estos son los nodos que no pertenecen a ninguna de las dos categorías anteriores. En el ejemplo: 'B', 'C', 'D', 'E', 'G' y 'J'.
Existen otros conceptos que definen las características del árbol, en relación a su tamaño:Orden: es el número potencial de hijos que puede tener cada elemento de árbol. De este modo, diremos que un árbol en el que cada nodo puede apuntar a otros dos es de orden dos, si puede apuntar a tres será de orden tres, etc.
Grado: el número de hijos que tiene el elemento con más hijos dentro del árbol. En el árbol del ejemplo, el grado es tres, ya que tanto 'A' como 'D' tienen tres hijos, y no existen elementos con más de tres hijos.
Nivel: se define para cada elemento del árbol como la distancia a la raíz, medida en nodos. El nivel de la raíz es cero y el de sus hijos uno. Así sucesivamente. En el ejemplo, el nodo 'D' tiene nivel 1, el nodo 'G' tiene nivel 2, y el nodo 'N', nivel 3.
Altura: la altura de un árbol se define como el nivel del nodo de mayor nivel. Como cada nodo de un árbol puede considerarse a su vez como la raíz de un árbol, también podemos hablar de altura de ramas. El árbol del ejemplo tiene altura 3, la rama 'B' tiene altura 2, la rama 'G' tiene altura 1, la 'H' cero, etc.GRAFICODE NODOS
Eliminación de entradas en un árbol B:Nodo interno (no hoja): Sustituirla por la siguiente (o la anterior) en el orden. Es decir, por la mayor de la rama izquierda, o la menor de la rama derecha.Nodo hoja: Eliminar la entrada de la hoja.          Casos de eliminación en nodo hoja. d = (p-1)/2 Nodo con más de d entradas: suprimir la entrada.Nodo con d entradas (el mínimo posible): reequilibrar el árbol.
3.4. Árboles B.456273822030356770Eliminación en nodo con d entradas:
Nodo hermano con más de d entradas: Se produce un proceso de préstamo de entradas:Se suprime la entrada, la entrada del padre pasa a la hoja de supresión y la vecina cede una entrada al nodo padre.Árbol B, p=5d= 239Ejemplo. Eliminar 67, 45.3.4. Árboles B.39627382203070Eliminación en nodo con d entradas:
Nodo hermano con más de d entradas: Se produce un proceso de préstamo de entradas:Se suprime la entrada, la entrada del padre pasa a la hoja de supresión y la vecina cede una entrada al nodo padre.Árbol B, p=5d= 235Ejemplo. Eliminar 67, 45.3.4. Árboles B.39627382203070Ningún hermano con más de d entradas: Con la hoja donde se hace la supresión (d-1 entradas) más una hoja hermana (d entradas) más la entrada del padre, se crea una nueva hoja con 2d entradas.Árbol B, p=5d= 235Ejemplo. Eliminar 39.3.4. Árboles B.627020307382Ningún hermano con más de d entradas: Con la hoja donde se hace la supresión (d-1 entradas) más una hoja hermana (d entradas) más la entrada del padre, se crea una nueva hoja con 2d entradas.Árbol B, p=5d= 235Ejemplo. Eliminar 39.
Ojo: Se suprime una entrada en el padre. Se debe repetir el proceso de eliminación en el nivel superior.3.4. Árboles B.ConclusionesEl orden de complejidad es proporcional a la altura del árbol, ~ logp/2 n en el peor caso.

Proyecto estructura

  • 1.
    UNIVERSIDAD TECNICA DEMANABIPARALELO- EL CARMENFACULTAD:INGENIERIA EN SISTEMAS
  • 2.
    FACILITADOR:ING: ROCIO MENDOZAFACULTAD:4TOSISTEMASESTUDIANTES:MERLY ZAMBRANO PALACIOS
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
    LISTAS ABIERTASLa formamás simple de estructura dinámica es la lista abierta. En esta forma los nodos se organizan de modo que cada uno apunta al siguiente, y el último no apunta a nada, es decir, el puntero del nodo siguiente vale NULL.
  • 16.
    INSERCIONInsertar un elementoen una lista vacía.Este es, evidentemente, el caso más sencillo. Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la lista valdrá NULL:
  • 17.
    INSERCION UN ELEMENTOEN LA ÚLTIMA POSICIÓN DE UNA LISTAEJEMPLO:
  • 18.
    LISTAS CIRCULARESUna listacircular es una lineal, en la que el ultimo elemento enlaza con el primero. Entonces es posible acceder a cualquier elemento de la lista desde cualquier punto dado. Las operaciones sobre una lista circular resultan mas sencillas, ya que se evitan casos especiales.Cuando recorremos una lista circular, diremos que hemos llegado al final de la misma, cuando nos encontramos de nuevo en el punto de partida; suponiendo, desde luego, que el punto de partida se guarda de alguna manera en la lista, por ejemploCon un puntero fijo al mismo.Otra posible solución al problema anterior sería poner en cada lista circular, un elemento especial identificable como lugar de parada. Este elemento especial recibe el nombre de elemento de cabecera de la lista. Esto presenta la ventaja de que la lista circular no estará nunca vacía.Una lista circular con un puntero al último elemento, es equivalentemente a una lista lineal recta con dos punteros, una al principio y otra al final
  • 19.
    +++4+00 +4 -1 0Listas CircularComo ejemplo de utilización de listas circulares, realizaremos la suma de ecuaciones algebraicas o polinómicas de las variables x, y, z.. Por ejemplo:2x³y + 4xy³- y⁴ más 2xy³-xyCada polinomio será representado como una lista en la que cada elemento representa un término nulo, como se indica a continuación:COEFICIENTESIGUIENTE
  • 20.
    FUNCIONESLeer PolinomioLeer_ polinomio(&polP);Leer_polinomio(&polQ);2. InicializarInicializar(&polP);Inicializar(&polQ);3. CompararComparar(&polP ,&polQ);Eliminar TérminosEliminar_Término(PolQ);5. Escribir Polinomios Escribir_polinomio(polQ);
  • 21.
    PILASUna pila cuentacon 2 operaciones imprescindibles, apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen añadir mas de uso habitualCREAR: Se crea la pila vacía
  • 22.
    APILAR: Se añadeun elemento a la pila (push)
  • 23.
    DESAPILAR: Se eliminael elemento frontal de la pila(pop)
  • 24.
    CIMA: Devuelve elelemento que esta en la cima de la pila(top o peek)
  • 25.
    VACIA: Devuelve ciertosi la pila esta vacía o falso en caso contrariocolasLa particularidad de una estructura de datos de cola es el hecho de que sólo podemos acceder al primer y al último elemento de la estructura. Así mismo, los elementos sólo se pueden eliminar por el principio y sólo se pueden añadir por el final de la cola.Ejemplos de colas en la vida real serían: personas comprando en un supermercado, esperando para entrar a ver un partido de béisbol, esperando en el cine para ver una película, una pequeña peluquería, etc. La idea esencial es que son todos líneas de espera.1.- Ejemplo de la cola1520918192.-vamos a insertar el 13 en la cola152091819133.-Sacamos al frente de la cola209181913
  • 26.
    #ifndef COLA #defineCOLA // Define la cola template <class T> class Cola{ private: struct Nodo{ T elemento; struct Nodo* siguiente; // coloca el nodo en la segunda posición }* primero; struct Nodo* ultimo; unsigned int elementos; public: Cola(){ elementos = 0; } ~Cola(){ while (elementos != 0) pop(); } void push(const T& elem){ Nodo* aux = new Nodo; aux->elemento = elem; if (elementos == 0) primero = aux; else ultimo->siguiente = aux; ultimo = aux; ++elementos; } void pop(){ Nodo* aux = primero; primero = primero->siguiente; delete aux; --elementos; } T consultar() const{ return primero ->elemento; } bool vacia() const{ return elementos == 0; } unsigned int size() const{ return elementos; } }; #endif COLAS
  • 27.
  • 28.
    MEMORIA ESTATICAEs laforma más fácil de almacenarel contenido de una variableALMACENAMIENTOASIGNACIONPara que un objeto puedaser almacenado en memoria estática su tamaño ( numerode Bytes necesario para su almacenamiento)ha de ser conocido en tiempo de compilaciónLa asignaciocion dememoria puede hacerseen tiempo de compilacióny los objetos están vigentesdesde que comienza la ejecucion del programa hastaque termina
  • 29.
    MANEJO DE MEMORIADINAMICAEsaquella que se reserva en tiempo de ejecución después de leer los datos y de conocer el tamaño exacto del problema a resolver. ALMACENAMIENTOa medida que el proceso va necesitando espacio para más líneas, va solicitando más memoria al sistema operativo para guardarlas. ASIGNACIONPrimer ajuste
  • 30.
  • 31.
    Peor ajusteLIBERACION DEMEMORIADINAMICA202020201488146688884444EL espacio de memoria se va llenando con diferentes “representando colores”, también pueden destruirse alguno de ellos, dejando “huecos” en el espacio de memoria, cuándo ya no quede espacio disponible o cuando decida la memoria “compacta”, colocando todos los objetos que se están usando al principio y consolidando todos los huecos de memoria al final quedando una gran área de memoria disponible para la creación de objetos
  • 32.
    MEMORIA ESTATICAVENTAJASMemoria fija,asignada en el momento de compilación.
  • 33.
    Fácil y rápidode almacenar datos.
  • 34.
    Es una solacasilla secuencial DESVENTAJASEn algunos casos se puede desperdiciar memoria.
  • 35.
    En otros casospuede ser que los datos sean mas grandes que el espacio asignado
  • 36.
  • 37.
    No se puedemodificar su tamaño en la ejecuciónMEMORIA DINAMICAVENTAJASNo hay desperdicio de memoria.
  • 38.
    Asigna el espaciocorrespondiente
  • 39.
  • 40.
  • 41.
    Utiliza un punteropara la ejecuciónDESVENTAJASEs más difícil de programar
  • 42.
    Cuando tenemos unarchivo mas grande que el espacio en memoria quedan inutilizados los espacios pequeñosARBOLCONCEPTO
  • 43.
    Un árbol esuna estructura de datos ampliamente usada que imita la forma de un árbol (un conjunto de nodos conectados).EYT$OULL$$$OA$$GRAFICO DE ARBOL
  • 44.
    DEFINICION DE NODOS:Unnodo, en informática, es un componente que forma parte de una red. En Internet, cada servidor constituye un nodo. Las computadoras que forman parte de una red también son nodos
  • 45.
    TIPOS DE NODONodo:Un nodo es la unidad sobre la que se construye el árbol y puede tener cero o más nodos hijos conectados a él. Nodo hijo: cualquiera de los nodos apuntados por uno de los nodos del árbol. En el ejemplo, 'L' y 'M' son hijos de 'G'. Nodo padre: nodo que contiene un puntero al nodo actual. En el ejemplo, el nodo 'A' es padre de 'B', 'C' y 'D'. Nodo raíz: nodo que no tiene padre. Este es el nodo que usaremos para referirnos al árbol. En el ejemplo, ese nodo es el 'A'. Nodo hoja: nodo que no tiene hijos. En el ejemplo hay varios: 'F', 'H', 'I', 'K', 'L', 'M', 'N' y 'O'. Nodo rama: aunque esta definición apenas la usaremos, estos son los nodos que no pertenecen a ninguna de las dos categorías anteriores. En el ejemplo: 'B', 'C', 'D', 'E', 'G' y 'J'.
  • 46.
    Existen otros conceptosque definen las características del árbol, en relación a su tamaño:Orden: es el número potencial de hijos que puede tener cada elemento de árbol. De este modo, diremos que un árbol en el que cada nodo puede apuntar a otros dos es de orden dos, si puede apuntar a tres será de orden tres, etc.
  • 47.
    Grado: el númerode hijos que tiene el elemento con más hijos dentro del árbol. En el árbol del ejemplo, el grado es tres, ya que tanto 'A' como 'D' tienen tres hijos, y no existen elementos con más de tres hijos.
  • 48.
    Nivel: se definepara cada elemento del árbol como la distancia a la raíz, medida en nodos. El nivel de la raíz es cero y el de sus hijos uno. Así sucesivamente. En el ejemplo, el nodo 'D' tiene nivel 1, el nodo 'G' tiene nivel 2, y el nodo 'N', nivel 3.
  • 49.
    Altura: la alturade un árbol se define como el nivel del nodo de mayor nivel. Como cada nodo de un árbol puede considerarse a su vez como la raíz de un árbol, también podemos hablar de altura de ramas. El árbol del ejemplo tiene altura 3, la rama 'B' tiene altura 2, la rama 'G' tiene altura 1, la 'H' cero, etc.GRAFICODE NODOS
  • 50.
    Eliminación de entradasen un árbol B:Nodo interno (no hoja): Sustituirla por la siguiente (o la anterior) en el orden. Es decir, por la mayor de la rama izquierda, o la menor de la rama derecha.Nodo hoja: Eliminar la entrada de la hoja. Casos de eliminación en nodo hoja. d = (p-1)/2 Nodo con más de d entradas: suprimir la entrada.Nodo con d entradas (el mínimo posible): reequilibrar el árbol.
  • 51.
  • 52.
    Nodo hermano conmás de d entradas: Se produce un proceso de préstamo de entradas:Se suprime la entrada, la entrada del padre pasa a la hoja de supresión y la vecina cede una entrada al nodo padre.Árbol B, p=5d= 239Ejemplo. Eliminar 67, 45.3.4. Árboles B.39627382203070Eliminación en nodo con d entradas:
  • 53.
    Nodo hermano conmás de d entradas: Se produce un proceso de préstamo de entradas:Se suprime la entrada, la entrada del padre pasa a la hoja de supresión y la vecina cede una entrada al nodo padre.Árbol B, p=5d= 235Ejemplo. Eliminar 67, 45.3.4. Árboles B.39627382203070Ningún hermano con más de d entradas: Con la hoja donde se hace la supresión (d-1 entradas) más una hoja hermana (d entradas) más la entrada del padre, se crea una nueva hoja con 2d entradas.Árbol B, p=5d= 235Ejemplo. Eliminar 39.3.4. Árboles B.627020307382Ningún hermano con más de d entradas: Con la hoja donde se hace la supresión (d-1 entradas) más una hoja hermana (d entradas) más la entrada del padre, se crea una nueva hoja con 2d entradas.Árbol B, p=5d= 235Ejemplo. Eliminar 39.
  • 54.
    Ojo: Se suprimeuna entrada en el padre. Se debe repetir el proceso de eliminación en el nivel superior.3.4. Árboles B.ConclusionesEl orden de complejidad es proporcional a la altura del árbol, ~ logp/2 n en el peor caso.