Fundamentos de Informática

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Fundamentos de Informática"

Transcripción

1 Tema 8: 8: Estructuras datos. Fundamentos Informática 1º Ingeniería Industrial Escuela Superior Ingenieros Universidad Sevilla Ismael Alcalá Torrego José Ángel Acosta Rodríguez Fernando Dorado Navas Fabio Gómez Estern-Aguilar Manuel López Martínez Amparo Núñez Reyes Carlos Vivas Venegas

2 TEMA TEMA 8: 8: Estructuras Estructuras datos. datos. Lista enlazada = Estructura datos lineal, formada por bloques información, con un formato común, enlazados entre sí mediante punteros. INICIO LISTA Bloque 1 Bloque 2 Bloque 3 Bloque 4 FIN Características Características listas listas Los elementos se distribuyen forma dispersa por la memoria: Los bloques información no ocupan posiciones consecutivas en la memoria. El orn la lista la establecen los enlaces entre bloques información. Acceso a los elementos aleatorio: Pue extraerse información cualquier elemento o insertar un bloque en cualquier posición. Acceso a los elementos no structivo: Al contrario que en colas y pilas, la extracción un bloque no implica su eliminación. El tamaño la lista pue modificarse forma dinámica: Al contrario que en colas y pilas, no hay un número máximo elementos la lista (salvo limitaciones la capacidad almacenamiento la máquina)

3 Cada elemento contiene un enlace con el siguiente elemento la lista. Conocida la posición un elemento, pomos recorrer la lista hacia lante No es posible recorrer la lista hacia atrás. INICIO LISTA Bloque 1 Bloque 2 Bloque 3 Bloque 4 en en C struct direc char nombre[40]; char calle[40]; char ciudad[20]; int codigo; struct direc * sig; info; Información l Elemento Enlace con el siguiente elemento Por convenio, el fin lista se indica como Puntero a la propia estructura Cada elemento requiere una reserva dinámica memoria al ser creado (liberar memoria al ser eliminado). La gestión la lista se hace con funciones apropiadas para añadir, insertar, borrar, buscar elementos, etc.

4 Construcción Construcción una una Lista Lista enlazada enlazada en en C Lista Desornada Dos Formas Lista Ornada No hay orn específico para los elementos. La lista se construye añadiendo cada nuevo elemento al final la lista existente. Si no existe lista, el nuevo elemento pasa a ser el primero y único la lista. Los elementos se añan para que la lista final tenga un orn específico. Hay que buscar el punto inserción l elemento según el orn establecido. La inserción pue ser al principio, en medio o al final. Si no existe lista, el nuevo elemento pasa a ser el primero y único la lista. raiz Elto 1 Elto 2 Elto 3 raiz Elto 1 Elto 2 Elto 3 nuevo elemento AL FINAL nuevo elemento INSERCIÓN raiz Elto 1 Elto 2 Elto 3 nuevo raiz Elto 1 Elto 2 nuevo Elto 3

5 1.- Lista Desornada struct direc * almac_fin( struct direc *top, struct direc * nuevo) struct direc * p = top; /* puntero que recorrerá la lista hasta el final */ if (top = = ) /* si no existe lista la crea */ return nuevo ; while( p -> sig ) /* recorre la lista hasta que p apunte al último */ p = p -> sig ; p -> sig = nuevo; /* enlaza el nuevo elemento al final */ return top; /* vuelve la cabeza */ top Elto. 1 Elto. 2 Elto. 3 nuevo E. nuevo

6 1.- Lista Desornada struct direc * almac_fin( struct direc *top, struct direc * nuevo) struct direc * p = top; /* puntero que recorrerá la lista hasta el final */ if (top = = ) /* si no existe lista la crea */ return nuevo ; while( p -> sig ) /* recorre la lista hasta que p apunte al último */ p = p -> sig ; p -> sig = nuevo; /* enlaza el nuevo elemento al final */ return top; /* vuelve la cabeza */ Recibe: -Puntero al comienzo la lista top -Puntero al nuevo elemento a insertar nuevo top Elto. 1 Elto. 2 Elto. 3 (Se be haber reservado memoria dinámicamente antes llamar a la función) nuevo E. nuevo

7 1.- Lista Desornada struct direc * almac_fin( struct direc *top, struct direc * nuevo) struct direc * p = top; /* puntero que recorrerá la lista hasta el final */ if (top = = ) /* si no existe lista la crea */ return nuevo ; while( p -> sig ) /* recorre la lista hasta que p apunte al último */ p = p -> sig ; p -> sig = nuevo; /* enlaza el nuevo elemento al final */ return top; /* vuelve Devuelve: la cabeza */ -Puntero al comienzo la lista (En este caso la cabecera la lista sólo varía al insertar el primer elemento) top Elto. 1 Elto. 2 Elto. 3 nuevo E. nuevo

8 1.- Lista Desornada struct direc * almac_fin( struct direc *top, struct direc * nuevo) struct direc * p = top; /* puntero que recorrerá la lista hasta el final */ if (top = = ) /* si no existe lista la crea */ return nuevo ; while( p -> sig ) /* recorre la lista hasta que p apunte al último */ p = p -> sig ; p -> sig = nuevo; /* enlaza Si el principio el nuevo elemento la lista es al final, */ la lista no return top; /* vuelve la cabeza */ existe y la creamos: Su primer elemento es el que le pasamos, nuevo, y es también la nueva cabecera la lista. nuevo top top E. nuevo La lista no existe El nuevo Elto es el primero y único la lista

9 1.- Lista Desornada Si el principio la lista no es, la lista ya tiene al menos un elemento. struct direc * almac_fin( struct direc Recorremos *top, struct la lista direc hasta * nuevo) encontrar el último elemento (Al salir l while, p apunta al último struct direc * p = top; /* puntero elemento) que recorrerá la lista hasta el final */ if (top = = ) /* si no existe lista la crea */ return nuevo ; while( p -> sig ) /* recorre la lista hasta que p apunte al último */ p = p -> sig ; p -> sig = nuevo; /* enlaza el nuevo elemento al final */ return top; /* vuelve la cabeza */ top Elto. 1 Elto. 2 Elto. 3 p nuevo E. nuevo

10 1.- Lista Desornada Alcanzado el final la lista, sólo queda enlazar el nuevo elemento a continuacíón struct direc * almac_fin( struct direc éste. *top, struct direc * nuevo) (El siguiente elemento al último (p->sig) berá struct direc * p = top; /* puntero apuntar que recorrerá a nuevo) la lista hasta el final */ if (top = = ) /* si no existe lista la crea */ return nuevo ; while( p -> sig ) /* recorre la lista hasta que p apunte al último */ p = p -> sig ; p -> sig = nuevo; /* enlaza el nuevo elemento al final */ return top; /* vuelve la cabeza */ top Elto. 1 Elto. 2 Elto. 3 p nuevo E. nuevo

11 1.- Lista Desornada struct direc * almac_fin( struct direc *top, struct direc * nuevo) Para finalizar volvemos la cabecera la lista (Haya ésta cambiado o no) struct direc * p = top; /* puntero que recorrerá la lista hasta el final */ if (top = = ) /* si no existe lista la crea */ return nuevo ; while( p -> sig ) /* recorre la lista hasta que p apunte al último */ p = p -> sig ; p -> sig = nuevo; /* enlaza el nuevo elemento al final */ return top; /* vuelve la cabeza */ top Elto. 1 Elto. 2 Elto. 3 E. nuevo

12 2.- Lista Ornada struct Estructura Estructura ciclista base base *insertar para para el ( el struct ejemplo ejemplo ciclista la la * función función top, struct insertar insertar ciclista * nuevo) struct struct struct ciclista ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista int intnum; *anterior num; /* /* número número = ; l l /*puntero ciclista ciclista */ al */ elemento anterior al "actual" */ /* Búsqueda char char l nombre[80]; punto nombre[80]; inserción /* /* nombre nombre */ l l ciclista ciclista */ */ while ( (actual int inttiempo;!= tiempo; ) /* /*&& tiempo tiempo (actual en en la -> la clasificación tiempo clasificación <= nuevo */ */ -> tiempo) ) anterior = struct actual; structciclista ciclista ** sig; sig; /* /* puntero puntero a siguiente siguiente */ */ actual = actual ; ; -> sig; /* El inserción El objetivo objetivo */ es es diseñar diseñar la la función función insertar insertar para para crear crear listas listas if ornadas (anterior ornadas!= ) elementos elementos /* inserción struct struct en ciclista. ciclista. medio o final */ anterior El El criterio criterio -> sig ornación = ornación nuevo; será será menor menor a a mayor mayor tiempo tiempo else clasificación. /* clasificación. inserción al principio la lista */ top = nuevo; nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */

13 2.- Lista Ornada struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) struct ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista *anterior = ; /*puntero al elemento anterior al "actual" */ /* Búsqueda l punto inserción */ while ( (actual!= ) && (actual -> tiempo <= nuevo -> tiempo) ) anterior = actual; actual = actual -> sig; /* Inserción */ if (anterior!= ) /* inserción en medio o final */ Recibe: -Puntero al comienzo la lista top -Puntero al nuevo elemento a insertar nuevo anterior -> sig = nuevo; (Se be haber reservado memoria dinámicamente else /* inserción al principio antes la llamar lista */ a la función) top = nuevo; nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */

14 2.- Lista Ornada struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) struct ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista *anterior = ; /*puntero al elemento anterior al "actual" */ /* Búsqueda l punto inserción */ while ( (actual!= ) && (actual -> tiempo <= nuevo -> tiempo) ) anterior = actual; actual = actual -> sig; Devuelve: /* Inserción */ -Puntero al comienzo la lista if (anterior!= ) /* inserción en medio o final */ anterior -> sig = nuevo; (En este caso la cabecera la lista varía si el else /* inserción al nuevo principio elemento la lista tiene */ un tiempo clasificación top = nuevo; inferior a todos los más) nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */

15 struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) struct ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista *anterior = ; /*puntero al elemento anterior al "actual" */ /* Búsqueda l punto inserción */ while ( (actual!= ) && (actual -> tiempo <= nuevo -> tiempo) ) anterior = actual; actual = actual -> sig; /* Inserción */ if (anterior!= ) /* inserción en medio o final */ - anterior, que apunta al elemento precente a actual anterior -> sig = nuevo; else /* inserción al principio la lista */ Elto 4 Elto 5 top = nuevo; nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */ 2.- Lista Ornada Recorreremos la lista con dos punteros: -actual que apunta al elemento que queremos examinar en ese momento top Elto 1 Elto 2 Elto 3 anterior actual

16 2.- Lista Ornada struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) struct ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista *anterior = ; /*puntero al elemento anterior al "actual" */ /* Búsqueda l punto inserción */ while ( (actual!= ) && (actual -> tiempo <= nuevo -> tiempo) ) anterior = actual; actual = actual -> sig; /* Inserción */ if (anterior!= ) /* inserción Recorremos en medio o final la lista */ s el principio anterior -> sig = nuevo; mientras: else /* inserción al principio la lista */ top = nuevo; 1.- No lleguemos al final nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */

17 2.- Lista Ornada struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) struct ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista *anterior = ; /*puntero al elemento anterior al "actual" */ /* Búsqueda l punto inserción */ while ( (actual!= ) && (actual -> tiempo <= nuevo -> tiempo) ) anterior = actual; actual = actual -> sig; Y 2.- El elemento actual tenga un tiempo clasificación /* Inserción */ inferior al l nuevo elemento. if (anterior!= ) /* inserción en medio o final */ Si no es así, el nuevo elemento be insertarse entre los anterior -> sig = nuevo; elementos la lista apuntados por anterior y actual. else /* inserción al principio la lista */ top = nuevo; top Elto 1 Elto 2 Elto 3 Elto 4 Elto 5 nuevo -> sig = actual; return top; /* vuelve la cabecera anterior la nuevo lista */ actual

18 2.- Lista Ornada Una vez localizado el punto inserción, hay que distinguir dos casos: struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) 1.- Que el punto inserción sea en medio o al final struct ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista *anterior = ; top /*puntero Elto 1 al elemento Elto 2 Eltoanterior 3 4al "actual" */ /* Búsqueda l punto inserción */ while ( (actual!= ) && (actual -> tiempo <= nuevo -> tiempo) ) anterior nuevo actual anterior = actual; actual = actual -> sig; /* Inserción */ if (anterior!= ) /* inserción en medio o final */ anterior -> sig = nuevo; else /* inserción al principio la lista */ top = nuevo; nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */

19 2.- Lista Ornada En cuyo caso Reconectamos como struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) top Elto 1 Elto 2 Elto 3 Elto 4 struct ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista *anterior = ; /*puntero al elemento anterior al "actual" */ anterior actual nuevo /* Búsqueda l punto inserción */ while ( (actual!= ) && (actual -> tiempo <= nuevo -> tiempo) ) anterior -> sig = nuevo anterior = actual; actual = actual -> sig; /* Inserción */ if (anterior!= ) /* inserción en medio o final */ anterior -> sig = nuevo; else /* inserción al principio la lista */ top = nuevo; nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */

20 2.- Lista Ornada struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) struct ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista *anterior = ; /*puntero al elemento anterior al "actual" */ /* Búsqueda l punto Si noinserción */ while ( (actual!= ) && (actual -> tiempo <= nuevo -> tiempo) ) 2.- La inserción es al principio la lista. anterior = actual; actual = actual -> sig; /* Inserción */ if (anterior!= ) /* inserción en medio o final */ anterior -> sig = nuevo; else /* inserción al principio la lista */ top = nuevo; nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */

21 2.- Lista Ornada En cuyo caso reconectamos como struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) Elto 4 struct ciclista *actual = top; /* puntero para moverse por la lista */ nuevo struct ciclista *anterior = ; /*puntero al elemento anterior top = al nuevo "actual" */ /* Búsqueda l punto anterior inserción */ actual while ( (actual!= ) && (actual -> tiempo <= nuevo -> tiempo) ) anterior = actual; actual = actual -> sig; /* Inserción */ if (anterior!= ) /* inserción en medio o final */ anterior -> sig = nuevo; else /* inserción al principio la lista */ top = nuevo; nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */ top Elto 1 Elto 2 Elto 3

22 2.- Lista Ornada En cualquiera los dos casos: struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) Caso 1: struct ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista *anterior = ; top Elto 1 Elto 2 Elto 3 Elto 4 /*puntero al elemento anterior al "actual" */ /* Búsqueda l punto inserción */ while ( (actual!= ) && (actual -> anterior tiempo <= nuevo -> tiempo) actual ) nuevo anterior = actual; Caso 2: actual = actual -> sig; /* Inserción */ nuevo if (anterior!= ) /* inserción en medio o final */ anterior -> sig = nuevo; anterior else /* inserción al principio la lista */ top = nuevo; nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */ nuevo -> sig = actual top Elto 1 Elto 2 Elto 3 Elto 4 actual

23 2.- Lista Ornada struct ciclista *insertar ( struct ciclista * top, struct ciclista * nuevo) struct ciclista *actual = top; /* puntero para moverse por la lista */ struct ciclista *anterior = ; /*puntero al elemento anterior al "actual" */ /* Búsqueda l punto inserción */ while ( (actual!= ) && (actual -> tiempo <= nuevo -> tiempo) ) anterior = actual; actual = actual -> sig; /* Inserción */ if (anterior!= ) /* inserción en medio o final */ anterior -> sig = nuevo; else /* inserción al principio la lista */ top = nuevo; nuevo -> sig = actual; return top; /* vuelve la cabecera la lista */ Para finalizar volvemos la cabecera la lista (Haya ésta cambiado o no)

24 Recuperación Recuperación elementos elementos 1.- Recorrer la lista completa void listado (struct ciclista * top) struct ciclista *p = top; /* Puntero para recorrer la lista */ while (p) /* Bucle que recorre la lista */ printf("%s %d\n", p -> nombre, p -> tiempo); p = p -> sig; Función que recorre la lista al completo s el primer al último elemento, mostrando los miembros nombre y tiempo.

25 Recuperación Recuperación elementos elementos 1.- Recorrer la lista completa void listado (struct ciclista * top) struct ciclista *p = top; /* Puntero para recorrer la lista */ while (p) /* Bucle que recorre la lista */ printf("%s %d\n", p -> nombre, p -> tiempo); p = p -> sig; Esta sentencia pu sustituirse en el caso general por cualquier otra secuencia en función los se see hacer con los datos la lista.

26 Recuperación Recuperación elementos elementos 2.- Búsqueda un elemento concreto struct ciclista * busca (struct ciclista *top, char *c) struct ciclista *p = top; /* Puntero para recorrer la lista */ while (p) if (!strcmp(c, p -> nombre) ) return p; /* vuelve el puntero*/ p = p -> sig; return ; /* no encontrado */ Función que busca el elemento cuyo miembro nombre coincida con el que se le pasa como argumento (char *c). Devuelve un puntero al elemento encontrado, o en caso no encantarlo.

27 Adicionales Adicionales para para Borrado elementos struct ciclista * borrar (struct ciclista * top, char * c) struct ciclista * p = top, * ant = ; /* Punteros para recorrer lista */ struct ciclista * aux; /* servirá para por liberar memoria */ while(p) if (!strcmp(c, p -> nombre)) /* lo hemos encontrado */ if (ant = = ) /* es el primero */ aux = p -> sig; free(p); Función que borra return un elemento aux; una lista enlazada. Para localizar else /* el el elemento, se a eliminar le pasa el va miembro en medio o al final */ nombre l elemento anta-> eliminar sig = p (char -> sig; *c), y la cabecera la lista free(p); (top) return top; Devuelve un puntero a la nueva cabecera la lista. ant = p; /* avance */ p = p -> sig; /* fin l while */ return top; /* no encontrado o lista vacía */

28 Adicionales Adicionales para para Borrado elementos struct ciclista * borrar (struct ciclista * top, char * c) struct ciclista * p = top, * ant = ; /* Punteros para recorrer lista */ struct ciclista * aux; /* servirá para por liberar memoria */ while(p) if (!strcmp(c, p -> nombre)) /* lo hemos encontrado */ if (ant = = ) /* es el primero */ aux = p -> sig; free(p); return aux; else /* el elemento a eliminar va en medio o al final */ ant -> sig = p -> sig; free(p); return top; ant = p; /* avance */ p = p -> sig; /* fin l while */ return top; /* no encontrado o lista vacía */ Se finen punteros para recorrer la lista (similar a la función insertar)

29 Adicionales Adicionales para para Borrado elementos struct ciclista * borrar (struct ciclista * top, char * c) struct ciclista * p = top, * ant = ; /* Punteros para recorrer lista */ struct ciclista * aux; /* servirá para por liberar memoria */ while(p) if (!strcmp(c, p -> nombre)) /* lo hemos encontrado */ if (ant = = ) /* es el primero */ aux = p -> sig; free(p); Recorremos la lista hasta el final return aux; else /* el elemento a eliminar va en medio o al final */ ant -> sig = p -> sig; free(p); return top; ant = p; /* avance */ p = p -> sig; /* fin l while */ return top; /* no encontrado o lista vacía */

30 Adicionales Adicionales para para Borrado elementos struct ciclista * borrar (struct ciclista * top, char * c) struct ciclista * p = top, * ant = ; /* Punteros para recorrer lista */ struct ciclista * aux; /* servirá para por liberar memoria */ while(p) if (!strcmp(c, p -> nombre)) /* lo hemos encontrado */ if (ant = = ) /* es el primero */ aux = p -> sig; Si el miembro nombre coinci free(p); con el que se le pasa como argumento, entonces el return elemento aux; a borrar está apuntado por actual else /* el elemento a eliminar va en medio o al final */ ant -> sig = p -> sig; free(p); top Elto 1 Elto 2 Elto 3 Elto 4 return top; ant = p; /* avance */ ant p = p -> sig; p /* fin l while */ return top; /* no encontrado o lista vacía */

31 Adicionales Adicionales para para Borrado elementos struct ciclista * borrar (struct ciclista * top, char * c) struct ciclista * p = top, * ant = ; /* Punteros para recorrer lista */ struct ciclista * aux; /* servirá para por liberar memoria */ while(p) if (!strcmp(c, p -> nombre)) /* lo hemos encontrado */ if (ant = = ) /* es el primero */ aux = p -> sig; free(p); return aux; Dos casos: else /* el elemento a eliminar va en medio o al final */ ant -> sig = p -> sig; 1.- El elemento a borrar free(p); es el primero return top; top Elto 1 Elto 2 Elto 3 Elto 4 ant = p; /* avance */ p ant = p -> sig; p /* fin l while */ return top; /* no encontrado o lista vacía */

32 Adicionales Adicionales para para Borrado elementos struct ciclista * borrar (struct ciclista * top, char * c) struct ciclista * p = top, * ant = ; /* Punteros para recorrer lista */ struct ciclista * aux; /* servirá para por liberar memoria */ while(p) if (!strcmp(c, p -> nombre)) /* lo hemos encontrado */ if (ant = = ) /* es el primero */ aux = p -> sig; free(p); return aux; else /* el elemento a eliminar va en medio o al final */ ant -> sig = p -> sig; Dos casos: free(p); return top; Liberamos memoria y volvemos la nueva cabecera ant = p; /* avance */ p = topp -> sig; Elto 1 Elto 2 Elto 3 Elto 4 /* fin l while */ return ant top; /* no p encontrado o lista vacía */ aux (nueva cabecera)

33 Adicionales Adicionales para para Borrado elementos struct ciclista * Dos borrar casos: (struct ciclista * top, char * c) struct ciclista * 2.- p = El top elemento, * ant = a ; borrar /* está Punteros en medio para o recorrer al final lista */ struct ciclista * aux; /* servirá para por liberar memoria */ while(p) Elto 1 top Elto 2 Elto 3 Elto 4 if (!strcmp(c, p -> nombre)) /* lo hemos encontrado */ if (ant = ant = ) p/* es el primero */ aux = p -> sig; free(p); return aux; else /* el elemento a eliminar va en medio o al final */ ant -> sig = p -> sig; free(p); return top; ant = p; /* avance */ p = p -> sig; /* fin l while */ return top; /* no encontrado o lista vacía */

34 Adicionales Adicionales para para Borrado elementos struct ciclista * Enlazamos borrar (struct saltándonos ciclista * top, el elemento char * c) a borrar y liberamos memoria. Devolvemos la cabecera lista. struct ciclista * p = top, * ant = ; /* Punteros para recorrer lista */ struct ciclista * aux; /* servirá para por liberar memoria */ while(p) Elto 1 top Elto 2 Elto 3 Elto 4 if (!strcmp(c, p -> nombre)) /* lo hemos encontrado */ if (ant = ant = ) /* es el primero p */ aux = p -> sig; free(p); return aux; else /* el elemento a eliminar va en medio o al final */ ant -> sig = p -> sig; free(p); return top; ant = p; /* avance */ p = p -> sig; /* fin l while */ return top; /* no encontrado o lista vacía */

35 Adicionales Adicionales para para Borrado elementos struct ciclista * borrar (struct ciclista * top, char * c) struct ciclista * p = top, * ant = ; /* Punteros para recorrer lista */ struct ciclista * aux; /* servirá para por liberar memoria */ while(p) if (!strcmp(c, p -> nombre)) /* lo hemos encontrado */ if (ant = = ) /* es el primero */ aux = p -> sig; free(p); return aux; else /* el elemento a eliminar va en medio o al final */ ant -> sig = p -> sig; free(p); Si return llegamos top; al final la lista, significa que no se ha encontrado el elemento a eliminar. ant = p; /* avance Devolvemos */ la cabecera lista. p = p -> sig; /* fin l while */ return top; /* no encontrado o lista vacía */

36 doblemente Cada elemento contiene dos enlaces con el siguiente y anterior elemento la lista. Conocida la posición un elemento, pomos recorrer la lista en ambas direcciones INICIO LISTA Bloque 1 Bloque 2 Bloque 3 Bloque 4 doblemente doblemente en en C struct direc char nombre[40]; char calle[40]; char ciudad[20]; int codigo; struct direc * sig; struct direc * ante; info; Información l Elemento Enlace con el siguiente elemento y el anterior Por convenio, el fin lista, y el elemento precente al primero se indican como Punteros a la propia estructura DE NUEVO: Cada elemento requiere una reserva dinámica memoria al ser creado (liberar memoria al ser eliminado). La gestión la lista se hace con funciones apropiadas para añadir, insertar, borrar, buscar elementos, etc.

37 doblemente doblemente doblemente 1.- Lista Desornada struct direc * d_almac_fin(struct direc *top, struct direc * nuevo) struct direc * p = top; /* puntero que recorrerá la lista hasta el final */ if (top = = ) return nuevo ; /* si no existe lista la crea */ while( p -> sig ) p = p -> sig ; /* recorre la lista hasta que p apunte al último */ p -> sig = nuevo; /* enlaza el nuevo elemento al final */ nuevo -> ante = p; /* enlace con el último */ return top; /* vuelve la cabeza */ INICIO LISTA Bloque 1 Bloque 2 Bloque 3 nuevo E. nuevo

38 doblemente doblemente doblemente 2.- Lista Ornada struct ciclista * dinsertar (struct ciclista * ppio, struct ciclista * nuevo) Estructura Estructura base base para para el el ejemplo ejemplo la la función funcióndinsertar struct ciclista *actual = ppio; /* puntero para moverse por la lista */ struct struct ciclista ciclista *anterior = ; /*puntero al elemento anterior al "actual" */ /* Búsqueda int int l num; num; punto /* /* número número inserción l l ciclista ciclista */ */ */ while ( (actual char char!= nombre[80]; nombre[80]; ) && (/*nombre actual -> tiempo l l ciclista*/ ciclista*/ <= nuevo -> tiempo) ) anterior int inttiempo; tiempo; = actual; /* /* tiempo tiempo en en la la clasificación clasificación */ */ actual struct struct = ciclista ciclista actual -> ** sig; sig; /* /* puntero puntero a siguiente siguiente */ */ /* inserción struct struct */ ciclista ciclista ** ant; ant; /* /* puntero puntero a anterior anterior */ */ if (anterior;!= ; ) anterior -> sig = nuevo; /* inserción en medio o final */ El El objetivo objetivo nuevo es es diseñar diseñar -> ant = la la anterior; función función dinsertar dinsertarpara para crear crear listas listas else ornadas ornadas elementos elementos struct structciclista. ciclista. El El criterio criterio ppio ornación ornación = nuevo; /* será inserción será menor menor al principio a a mayor mayor tiempo tiempo la lista */ clasificación. clasificación. nuevo -> ant = ; nuevo -> sig = actual; if ( actual!= ) actual -> ant = nuevo; return ppio; /* vuelve la cabecera la lista */

39 doblemente doblemente doblemente 2.- Lista Ornada struct ciclista * dinsertar (struct ciclista * ppio, struct ciclista * nuevo) struct ciclista *actual = ppio; /* puntero para moverse por la lista */ struct ciclista *anterior = ; /*puntero al elemento anterior al "actual" */ /* Búsqueda l punto inserción */ while ( (actual!= ) && ( actual -> tiempo <= nuevo -> tiempo) ) anterior = actual; actual = actual -> sig; /* inserción */ if (anterior!= ) anterior -> sig = nuevo; /* inserción en medio o final */ nuevo -> ant = anterior; else ppio = nuevo; /* inserción al principio la lista */ nuevo -> ant = ; nuevo -> sig = actual; if ( actual!= ) actual -> ant = nuevo; return ppio; /* vuelve la cabecera la lista */

40 doblemente Borrado elementos struct ciclista * dborrar (struct ciclista * top, char * c) struct ciclista * p = top; while(p) if (!strcmp(c, p->nombre) ) /* lo hemos encontrado */ if ( p -> ant = = ) /* es el primero */ top = p -> sig; if (top) top -> ant = ; /* si el borrado no era único */ free(p);return top; if ( p -> sig = = ) /* si no, es el último */ p -> ant -> sig = ; free (p);return top; else p -> ant -> sig = p -> sig; /* va en medio */ p -> sig -> ant = p -> ant; free(p); return top; /*fin if */ p = p -> sig; /* avance */ /* fin l while */ return top; /* no encontrado o lista vacía */

LISTAS ENLAZADAS FUNDAMENTOS TEORICOS

LISTAS ENLAZADAS FUNDAMENTOS TEORICOS LISTAS ENLAZADAS FUNDAMENTOS TEORICOS Una lista enlazada es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta al siguiente elemento por un «enlace»

Más detalles

INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS

INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) 1. INTRODUCCIÓN INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS Las computadoras fueron diseñadas o ideadas como una herramienta mediante la cual

Más detalles

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Procedimientos para asignación y liberación de memoria. Tipos de datos recursivos.

Más detalles

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Procedimientos para asignación y liberación de memoria. Tipos de datos recursivos.

Más detalles

UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS

UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS UNIVERSIDAD AUTONOMA DE MADRID ESCUELA POLITÉCNICA SUPERIOR ESTRUCTURAS DE DATOS Y ALGORITMOS Curso 2008-09 Examen parcial APELLIDOS: NOMBRE: 1. (0.5 puntos) Enumera las características de un algoritmo

Más detalles

Tema 8. Listas. José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz

Tema 8. Listas.  José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz Tema 8. Listas http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información Universitat

Más detalles

LISTAS. Prof. Ing. M.Sc. Fulbia Torres

LISTAS. Prof. Ing. M.Sc. Fulbia Torres LISTAS ESTRUCTURAS DE DATOS 2006 Prof. UNIDAD II ESTRUCTURAS DE DATOS LISTAS Definición. Representación de Listas. Lista Lineal Simplemente Enlazada. Operaciones TAD LLSE. Implementación Dinámica. Otras

Más detalles

Estructuras de Datos Dinámicas

Estructuras de Datos Dinámicas Estructuras de Datos Dinámicas 1 Resumiendo, son aquellas cuyo tamaño (longitud, número de elementos...) varía en tiempo de ejecución. Las más famosas son: Listas simplemente enlazadas (con y sin cabecera),

Más detalles

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Unidad Académica Profesional Tianguistenco Ingeniería de Software Estructura de Datos

Más detalles

Listas lineales (circulares,doblemente enlazadas recopilación Raúl H Ruiz C)

Listas lineales (circulares,doblemente enlazadas recopilación Raúl H Ruiz C) Listas circulares: Una lista circular es una lista lineal en la que el último nodo a punta al primero. Las listas circulares evitan excepciones en las operaciones que se realicen sobre ellas. No existen

Más detalles

Tema 4. Estructuras Dinámicas

Tema 4. Estructuras Dinámicas Tema 4. Estructuras Dinámicas E.U.Politécnica. I.T.Industrial (Electricidad) E.U. Politécnica Departamento Lenguajes y Ciencias de la Computación. Universidad de Málaga José Luis Leiva Olivencia. Despacho:

Más detalles

Estructuras Dinámicas

Estructuras Dinámicas Departamento de Lenguajes yciencias de la Computación 4 Estructuras Dinámicas Contenido 1. Gestión dinámica de memoria. 2. El tipo puntero. 3. Operaciones con punteros. 4. Operaciones básicas sobre listas

Más detalles

Realizar el ejercicio anterior utilizando Punteros

Realizar el ejercicio anterior utilizando Punteros PUNTEROS Y ARRAYS En C existe una relación entre punteros y arrays tal que cualquier operación que se pueda realizar mediante la indexación de un arrays, se puede realizar también con punteros. Para clarificar

Más detalles

Implementación de las Clases Pila, Cola, Lista y Arbol

Implementación de las Clases Pila, Cola, Lista y Arbol 1/1 Implementación de las Clases Pila, Cola, Lista y Arbol Josefina Sierra Santibáñez 28 de noviembre de 2017 2/1 Implementación de Estructuras de Datos Implementaremos cada estructura de datos en dos

Más detalles

TEMA 2. ORGANIZACIONES DE FICHEROS Y ESTRUCTURAS DE ACCESO

TEMA 2. ORGANIZACIONES DE FICHEROS Y ESTRUCTURAS DE ACCESO TEMA 2. ORGANIZACIONES DE FICHEROS Y ESTRUCTURAS DE ACCESO 1. Introducción 2. Conceptos fundamentales de organizaciones de ficheros 3. Dispositivos de almacenamiento secundario 4. Ficheros desordenados

Más detalles

Fundamentos de Informática

Fundamentos de Informática Tema 7: 7: Estructuras datos. Colas y Pilas Fundamtos Informática 1º Ingiería Industrial Escuela Superior Ingieros Universidad Sevilla Ismael Alcalá Torrego José Ángel Acosta Rodríguez Fernando Dorado

Más detalles

Estructuras de datos: Pilas, Colas, Listas

Estructuras de datos: Pilas, Colas, Listas Estructuras de datos: Pilas,, Facultad de Informática Universidad de A Coruña Pilas,, Table of Contents Pilas 1 Pilas 2 3 Pilas,, Table of Contents Pilas 1 Pilas 2 3 Pilas,, Pilas Acceso limitado al último

Más detalles

Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y

Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y distribución. Listas Enlazadas Estructuras de datos dinámicas

Más detalles

Estructuras Enlazadas AyED UTN-BA

Estructuras Enlazadas AyED UTN-BA Funciones para estructuras enlazadas Sin Plantilla El Nodo Con plantilla para un dato genérico en info El Nodo struct Nodo1 int info; Nodo* sig; ; Nodo1* p1 = new Nodo1(); struct Nodo2 string info; Nodo*

Más detalles

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido

Más detalles

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros.

UNIDAD 8 Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Tipos de datos dinámicos: Punteros Asignación dinámica de memoria. Uso de punteros. Inicialización y asignación de punteros. Procedimientos para asignación y liberación de memoria. Tipos de datos recursivos.

Más detalles

Notas de estructura de datos con lenguaje C. Estructuras de datos dinámicas

Notas de estructura de datos con lenguaje C. Estructuras de datos dinámicas Listas Enlazadas que está prohibida su impresión y distribución. Estructuras de datos dinámicas Contrariamente a las estructuras de datos estáticas (arreglos-listas, vectores y tablas- y estructuras) en

Más detalles

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos Tema 2 Memoria Dinámica 2.1 Datos estáticos y dinámicos Datos estáticos: su tamaño y forma es constante durante la ejecución de un programa y por tanto se determinan en tiempo de compilación. El ejemplo

Más detalles

TEMA 4 El tipo conjunto

TEMA 4 El tipo conjunto TEMA El tipo conjunto PROGRAMACIÓN Y ESTRUCTURAS DE DATOS Tipo conjunto. Definiciones generales. Diccionario.. Tabla de dispersión.. Trie.. Árboles de búsqueda digitales. Cola de prioridad.. Montículo..

Más detalles

Estructura de Datos. Listas Enlazadas

Estructura de Datos. Listas Enlazadas Estructura de Datos Listas Enlazadas Conceptos de Lista enlazada Una lista enlazada es una secuencia de nodos que se interconectan mediante sus campos de enlace. Nodo: un objeto creado desde una clase

Más detalles

Implementación de las Clases Pila, Cola, Lista y Arbol

Implementación de las Clases Pila, Cola, Lista y Arbol 1/1 Implementación de las Clases Pila, Cola, Lista y Arbol Josefina Sierra Santibáñez 13 de mayo de 2018 2/1 Implementación de Estructuras de Datos Implementaremos cada estructura de datos en dos niveles.

Más detalles

Punteros. Índice. 1. Qué es un puntero y por que son importantes.

Punteros. Índice. 1. Qué es un puntero y por que son importantes. Punteros Índice 1. Qué es un puntero y por que son importantes. 2. Punteros a tipos básicos. 3. Punteros sin tipo. 4. Memoria dinámica. 5. Punteros a estructuras. 6. Punteros a matrices. 7. Punteros a

Más detalles

Listas. Rafael Palacios May/2005

Listas. Rafael Palacios May/2005 Listas Rafael Palacios May/2005 Descripción Las listas son estructuras de datos parecidas a los vectores Aprovechan la memoria mejor que los vectores Facilitan las operaciones de inserción y borrado No

Más detalles

ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS)

ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS) 2010 UNAN LEON Departamento de Computación Ing. En Sistemas Sabatino Docente: Ing. Karina Esquivel A. Asignatura: Practicas Profesionales. ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS) TEMA 3: ESTRUCTURAS DINÁMICAS

Más detalles

Las listas son una sucesión de cero o más elementos. Esta es una definición muy simple y que no aclara demasiado en términos informáticos.

Las listas son una sucesión de cero o más elementos. Esta es una definición muy simple y que no aclara demasiado en términos informáticos. LISTAS Las listas son una sucesión de cero o más elementos. Esta es una definición muy simple y que no aclara demasiado en términos informáticos. Hay varios tipos de listas, las hay enlazadas, no enlazadas,

Más detalles

PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA

PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA UNIDAD DE APRENDIZAJE ADMINISTRACION DE BASES DE DATOS Unidad de competencia III Manejar las estructuras dinámicas en memoria secundaria Arboles ELABORACION

Más detalles

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Introducción Un árbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos. A B C D E F G H I J K Clasificación con respecto a su relación: Nodo hijo: cualquiera de los nodos

Más detalles

Listas. Programación en C LISTAS. Prof. Álvaro Sánchez Miralles. Programación en C. Listas. Objetivos

Listas. Programación en C LISTAS. Prof. Álvaro Sánchez Miralles. Programación en C. Listas. Objetivos LISTAS UPCO ICAI Departamento de Electrónica y Automática 1 Objetivos Aprender a manejar una lista Manejar a través de listas, vectores de datos cuyo tamaño cambia a lo largo del programa y no se conoce

Más detalles

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Tema 05: Tablas hash M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido Tablas hash o de dispersión Función

Más detalles

Instituto Politécnico Nacional

Instituto Politécnico Nacional Instituto Politécnico Nacional Secretaria Académica Dirección de Estudios Profesionales Escuela Superior de Ingeniería Mecánica y Eléctrica Unidad Culhuacan Ingeniería en Comunicaciones y Electrónica Academia

Más detalles

Cuál es la frecuencia de acceso de una memoria de acceso aleatorio con un tiempo de acceso de 80 nseg. y un tiempo de ciclo de 100 nseg.?.

Cuál es la frecuencia de acceso de una memoria de acceso aleatorio con un tiempo de acceso de 80 nseg. y un tiempo de ciclo de 100 nseg.?. Cuál es la frecuencia de acceso de una memoria de acceso aleatorio con un tiempo de acceso de nseg. y un tiempo de ciclo de nseg.?. f A Hz t 9 C seg Petición de lectura t A Información disponible t C Información

Más detalles

Introducción a MATLAB

Introducción a MATLAB Introducción a MATLAB Sistemas Conexionistas - Curso 07/08 MATLAB es un sistema interactivo basado en matrices para cálculos científicos y de ingeniería. Se pueden resolver problemas numéricos relativamente

Más detalles

Capítulo. Listas, pilas y colas en C. Contenido. Introducción

Capítulo. Listas, pilas y colas en C. Contenido. Introducción Capítulo 32 Listas, pilas y colas en C Contenido Listas enlazadas Clasificación de listas enlazadas Operaciones en listas enlazadas Inserción de un elemento en una lista Búsqueda de un elemento de una

Más detalles

Fundamentos de Informática

Fundamentos de Informática Tema 2: 2: Sentencias de de Control de de los los Programas Fundamentos de Informática 1º Ingeniería Industrial Escuela Superior de Ingenieros Universidad de Sevilla Ismael lcalá Torrego José Ángel costa

Más detalles

LISTAS CIRCULARES. // Métodos private CElemento() {} // constructor. ultimo

LISTAS CIRCULARES. // Métodos private CElemento() {} // constructor. ultimo LISTAS CIRCULARES Una lista circular es una lista lineal en la que el último elemento apunta al primero. Entonces es posible acceder a cualquier elemento de la lista desde cualquier punto dado. Las operaciones

Más detalles

UNIVERSIDAD AUTONOMA DEL ESTADO DE MEXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO ESTRUCTURAS DE DATOS ING. GREGORIO GARCIA ESTRADA INTEGRANTES:

UNIVERSIDAD AUTONOMA DEL ESTADO DE MEXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO ESTRUCTURAS DE DATOS ING. GREGORIO GARCIA ESTRADA INTEGRANTES: UNIVERSIDAD AUTONOMA DEL ESTADO DE MEXICO CENTRO UNIVERSITARIO UAEM ATLACOMULCO ESTRUCTURAS DE DATOS ING. GREGORIO GARCIA ESTRADA INTEGRANTES: ALONSO GOMEZ SANDOVAL TERESA PEREZ GONZALEZ ICO 14 QUE ES

Más detalles

Listas enlazadas. Programación de Sistemas

Listas enlazadas. Programación de Sistemas Listas enlazadas Programación de Sistemas 1 Estructuras de datos Abstracción que representa un conjunto de datos en un programa con el objeto de facilitar su manipulación Diferentes estructuras de datos

Más detalles

12. LISTAS Introducción Listas con punto de interés

12. LISTAS Introducción Listas con punto de interés 12. LISTAS 12.1. INTRODUCCIÓN... 1 12.2. LISTAS CON PUNTO DE INTERÉS... 1 12.3. IMPLEMENTACIÓN DE LA CLASE LISTA EN C++... 5 12.3.1 Implementación de la clase LISTA en C++ con vectores... 6 12.3.2 Implementación

Más detalles

3 - Tipos Inductivos (Recursivos)

3 - Tipos Inductivos (Recursivos) Programación 2 3 - Tipos Inductivos (Recursivos) Estructuras Dinámicas: Punteros y Listas 1 Tipos inductivos tienen, en general, cardinalidad infinita contienen valores de "tamaño arbitrario" Ejemplos:

Más detalles

Programación de sistemas

Programación de sistemas Programación de sistemas Listas enlazadas Julio Villena Román MATERIALES BASADOS EN EL TRABAJO DE DIFERENTES AUTORES: Carlos Delgado Kloos, Jesús Arias Fisteus, Carlos Alario Hoyos

Más detalles

ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C

ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C 2013 ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) EN C Departamento de Computación UNAN-León TEMA 5: ESTRUCTURAS DINÁMICAS DE DATOS (COLAS) 5.1 INTRODUCCIÓN: Las colas son secuencias de elementos caracterizadas

Más detalles

BASES DE DATOS. En Access hay una serie de herramientas u objetos que facilitan enormemente el tratamiento de la información:

BASES DE DATOS. En Access hay una serie de herramientas u objetos que facilitan enormemente el tratamiento de la información: BASES DE DATOS Concepto de archivo o fichero. Un Fichero es un conjunto de información almacenado en los periféricos de memoria masiva de datos y que es tratado como una unidad por el sistema operativo.

Más detalles

LISTAS ENLAZADAS DOBLES C++

LISTAS ENLAZADAS DOBLES C++ LISTAS ENLAZADAS DOBLES C++ fichero nodo.h #ifndef NODO_H #define NODO_H #include using namespace std; class Nodo private: int codigo; string nombre; float nota1; float nota2; float nota3; Nodo*

Más detalles

13. LISTAS Introducción Listas con punto de interés

13. LISTAS Introducción Listas con punto de interés Ricardo Ferrís / Jesús Albert Algoritmos y Estructuras de Datos I 13. LISTAS 13.1. INTRODUCCIÓN...59 13.2. LISTAS CON PUNTO DE INTERÉS...59 13.3. IMPLEMENTACIÓN DE LA CLASE LISTA EN C++...63 13.3.1 Implementación

Más detalles

ELO320 Estructuras de Datos y Algoritmos. Listas. Tomás Arredondo Vidal

ELO320 Estructuras de Datos y Algoritmos. Listas. Tomás Arredondo Vidal ELO320 Estructuras de Datos y Algoritmos Listas Tomás Arredondo Vidal Este material está basado en: Robert Sedgewick, "Algorithms in C", (third edition), Addison-Wesley, ISBN 0-201-31663-3. 2001 material

Más detalles

LISTAS DOBLES y multiples

LISTAS DOBLES y multiples LISTAS DOBLES y multiples Temas Listas doblemente enlazadas Características y Operaciones Ejemplos Lista múltiples enlaces LISTAS DOBLEMENTE ENLAZADAS y MÚLTIPLE ENLACES Suponga el siguiente problema:

Más detalles

Tema 4- Representación Enlazada

Tema 4- Representación Enlazada Tema 4- Representación Enlazada Tema 4: Representación Enlazada Índice general: 1. Representación Enlazada: Variables referencia Java como enlaces. 2. Listas Enlazadas Genéricas. Operaciones y costes.

Más detalles

TAD CONJUNTOS Y MULTICONJUNTOS

TAD CONJUNTOS Y MULTICONJUNTOS TAD CONJUNTOS Y MULTICONJUNTOS INTRODUCCIÓN Qué es un conjunto? Un conjunto en matemática es una colección de objetos. Los objetos no mantienen ninguna relación aparente entre ellos y tampoco están obligados

Más detalles

Introducción a MATLAB

Introducción a MATLAB Introducción a MATLAB Sistemas Conexionistas - Curso 08/09 MATLAB es un sistema interactivo basado en matrices que se utiliza para cálculos científicos y de ingeniería. Puede resolver problemas numéricos

Más detalles

Capitulo V Listas Enlazadas

Capitulo V Listas Enlazadas Capitulo V Listas Enlazadas Muere lentamente, quien abandona un proyecto antes de iniciarlo, no preguntando de un asunto que desconoce o no respondiendo cuando le indagan sobre algo que sabe. Evitemos

Más detalles

Categorías de métodos. Métodos constructores y destructores

Categorías de métodos. Métodos constructores y destructores 1. Categorías de los métodos 2. Inicialización de miembros 3. Métodos constructores 4. Inicialización de objetos con y sin constructores 5. Sobrecarga de funciones constructoras 6. Argumentos implícitos

Más detalles

Problemas de Recursividad

Problemas de Recursividad Problemas de Recursividad Problema 1. El factorial de un número entero n 0, denotado como n!, se define! como!!! i = 1 2 n cuando n > 0, y 0! = 1. Por ejemplo 6! = 1 2 3 4 5 6 = 720 Diseñad una método

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 3 Estructuras de datos Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática.

Más detalles

MODELADO Y SIMULACIÓN. Solución al Ejercicio de Autocomprobación 1

MODELADO Y SIMULACIÓN. Solución al Ejercicio de Autocomprobación 1 Solución al Ejercicio de Autocomprobación 1 PREGUNTA 1 (3 puntos) Se pretende estudiar mediante simulación el funcionamiento de un taller dedicado al ensamblaje y pintado de marcos para cuadros. Los marcos

Más detalles

Organización de los contenidos en Joomla!

Organización de los contenidos en Joomla! Organización de los contenidos en Joomla! Para darle forma al contenido de nuestra web podríamos seguir estos pasos: 1. Crear una estructura de categorías que organizarán a los artículos. 2. Escribir los

Más detalles

Manual del Usuario de Microsoft Access Consultas - Página 1. Tema IV: Consultas. IV.1. Creación de Consultas

Manual del Usuario de Microsoft Access Consultas - Página 1. Tema IV: Consultas. IV.1. Creación de Consultas Manual del Usuario de Microsoft Access Consultas - Página 1 Tema IV: Consultas IV.1. Creación de Consultas La potencia real de una base de datos reside en su capacidad para mostrar los datos que se desea

Más detalles

Entrada y Salida de Datos. Lectura de archivos.

Entrada y Salida de Datos. Lectura de archivos. 1 Entrada y Salida de Datos. Lectura de archivos. Son innumerables los casos en los que son necesarios guardar datos entre ejecuciones de un programa para poder ser recuperados en futuras sesiones. Los

Más detalles

Tipos Recursivos de Datos

Tipos Recursivos de Datos 1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),

Más detalles

Estructuras dinámicas lineales (i)

Estructuras dinámicas lineales (i) Estructuras dinámicas lineales (i) Introducción En la lección anterior se explicaron los conceptos de dinámicas y puntero; vimos la forma en que se implementan dichas tanto en la notación algorítmica como

Más detalles

Estructura de Datos. Centro Universitario UAEM Valle de México. Unidad II. Estructuras de Datos Lineales - Listas

Estructura de Datos. Centro Universitario UAEM Valle de México. Unidad II. Estructuras de Datos Lineales - Listas Estructura de Datos Centro Universitario UAEM Valle de México Unidad II. Estructuras de Datos Lineales - Listas Licenciatura en Ingeniería en Computación Ph. D. Victor Manuel Landassuri Moreno vmlandassurim@uaemex.mx

Más detalles

Lista Simple con Puntero al Principio y Puntero al Final

Lista Simple con Puntero al Principio y Puntero al Final Unidad 3 Estructuras de Datos Avanzadas Introducción Hasta el momento se estudiaron las siguientes estructuras estáticas y dinámicas básicas para representar diferentes colecciones de elementos: Arreglo

Más detalles

Tipos de Datos Recursivos

Tipos de Datos Recursivos 1/1 Tipos de Datos Recursivos Josefina Sierra Santibáñez 15 de mayo de 2018 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones), sino

Más detalles

Procesos e Hilos en C

Procesos e Hilos en C Procesos e Hilos en C 6 de febrero de 2012 En esta sesión vamos a escribir programas en lenguaje C que utilicen hilos y procesos para comparar el rendimiento del sistema ante la gestión de unos y otros.

Más detalles

Introducción a las sentencias de control

Introducción a las sentencias de control INSTRUCCIONES DE CONTROL CONTENIDOS 1. Introducción a las sentencias de control. 2. Instrucciones o sentencias condicionales: IF, IF-ELSE, SWITCH. 3. Instrucciones o sentencias repetitivas o iterativas:

Más detalles

Unidad Nº V Listas Enlazadas

Unidad Nº V Listas Enlazadas Instituto Universitario Politécnico Santiago Mariño Unidad Nº V Listas Enlazadas Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta

Más detalles

Ciclo de vida de un producto (CVP)

Ciclo de vida de un producto (CVP) El ciclo de vida de un producto es el conjunto de etapas que recorre un producto individual (o conjunto interrelacionado de componentes físicos o intangibles) destinado a satisfacer una necesidad desde

Más detalles

Tablas Hash y árboles binarios

Tablas Hash y árboles binarios Tablas Hash y árboles binarios Algoritmos Tablas hash Árboles Binarios Árboles Balanceados Tablas Hash Introducción Las tablas hash son estructuras tipo vector que ayudan a asociar claves con valores o

Más detalles

Tema 6. Gestión dinámica de memoria

Tema 6. Gestión dinámica de memoria Tema 6. Gestión dinámica de memoria http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz@icc.uji.es Estructuras de datos y de la

Más detalles

Unidad III: Estructuras lineales

Unidad III: Estructuras lineales Unidad III: Estructuras lineales Listas En Ciencias de la Computación, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos.

Más detalles

SISTEMAS OPERATIVOS SISTEMA DE ARCHIVOS

SISTEMAS OPERATIVOS SISTEMA DE ARCHIVOS UNIVERSIDAD INTERNACIONAL SAN ISIDRO LABARDOR Escuela de Ingeniería en Sistemas SISTEMAS OPERATIVOS SISTEMA DE ARCHIVOS Cuatrimestre II-2006 Recopilado por Ing. Fernely Artavia Fallas Visión del usuario

Más detalles

Modificar Referidos Para Consejero, Trabajador Social y Psicólogo

Modificar Referidos Para Consejero, Trabajador Social y Psicólogo 1 Utilice esta guía para modificar aquellos referidos ya registrados en el sistema. Los usuarios sólo pueden modificar aquellos referidos creados por ellos mismo. Una vez se ha creado un referido, el sistema

Más detalles

Estructura de datos y algoritmos. Tema IV: TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES

Estructura de datos y algoritmos. Tema IV: TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES Estructura de datos y algoritmos Tema IV: TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES TIPOS DE DATOS ABSTRACTOS DINÁMICOS LINEALES 4.1 Introducción 4.2 Ejemplos de TDA dinámicos lineales 4.3 Pilas 4.3.1

Más detalles

Estructuras de Datos

Estructuras de Datos 8 de marzo de 2011 1 2 3 4 5 Tipo de Dato Abstracto Un tipo de dato abstracto (TDA), corresponde a un conjunto de valores y un conjunto de operaciones sobre tales valores. s de TDA Enteros. Reales. Booleanos.

Más detalles

Estructura de Datos Tema 6. Árboles. Contenido 14/06/2018

Estructura de Datos Tema 6. Árboles. Contenido 14/06/2018 Estructura de Datos Tema 6. Árboles Presenta: David Martínez Torres Universidad Tecnológica de la Mixteca Instituto de Computación Oficina No. dtorres@mixteco.utm.mx Contenido 1. Definición y operaciones

Más detalles

NUEVAS TECNOLOGÍAS APLICADAS A LA GESTIÓN (E66) 5º INGENIERÍA EN INFORMÁTICA. Tema 5. Estructura Lógica de la Memoria.

NUEVAS TECNOLOGÍAS APLICADAS A LA GESTIÓN (E66) 5º INGENIERÍA EN INFORMÁTICA. Tema 5. Estructura Lógica de la Memoria. NUEVAS TECNOLOGÍAS APLICADAS A LA GESTIÓN (E66) 5º INGENIERÍA EN INFORMÁTICA Tema 5. Estructura Lógica de la Memoria. 1.- Introducción. 2.- Estructura Lógica según ISO 7816/3. 2.1.- Memoria Volátil. 2.2.-

Más detalles

Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales

Estructura de Datos. TDA: Listas. Primer Semestre, 2010. Indice. Tipos de estructura de datos lineales Estructura de Datos TDA: Listas Prof. Mauricio Solar Prof. Lorna Figueroa Parte del material fue obtenido de Lic. Claudio Barúa Primer Semestre, 2010 Indice Tipos de estructura de datos lineales Listas

Más detalles

TEMA 6: Tipos de datos estructurados

TEMA 6: Tipos de datos estructurados TEMA 6: Tipos de datos estructurados 6.1. Introducción Los tipos de datos estructurados o tipos compuestos son agrupaciones de otros tipos de datos. Los tipos de datos estructurados más comunes son: vectores

Más detalles

Un árbol A es un conjunto finito de uno o más nodos tales: ,...V n. ) se dividen en m>=0 conjuntos disjuntos denominados A 1

Un árbol A es un conjunto finito de uno o más nodos tales: ,...V n. ) se dividen en m>=0 conjuntos disjuntos denominados A 1 POTIII 2.5 rboles Un árbol es un conjunto finito de uno o más nodos tales: 1. xiste un nodo especial denominado RIZ(V 1 ) del árbol 2. os nodos restantes (V 1,V 2,...V n ) se dividen en m>=0 conjuntos

Más detalles

Contenedores asociativos en la STL de C++

Contenedores asociativos en la STL de C++ Contenedores asociativos en la STL de C++ mat-151 Alonso Ramírez Manzanares Computación y Algoritmos 05.05 Variables y funciones estáticas de clase Alonso Ramírez Manzanares Computación y Algoritmos 05.05

Más detalles

ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS)

ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS) 2012 UNAN LEON Departamento de Computación Ing. En Sistemas de Información Docente: Ing. Karina Esquivel A. Asignatura: Algoritmo y Estructura de Datos. ESTRUCTURAS DINÁMICAS DE DATOS (LISTAS) TEMA 2:

Más detalles

REPÚBLICA DEL ECUADOR MINISTERIO DE FINANZAS. ADMINISTRACIÓN DE USUARIOS y FUNCIONES EN EL SISTEMA ESIGEF RUP-DS-018

REPÚBLICA DEL ECUADOR MINISTERIO DE FINANZAS. ADMINISTRACIÓN DE USUARIOS y FUNCIONES EN EL SISTEMA ESIGEF RUP-DS-018 REPÚBLICA DEL ECUADOR MINISTERIO DE FINANZAS ADMINISTRACIÓN DE USUARIOS y FUNCIONES EN EL SISTEMA ESIGEF RUP-DS-018 ADMINISTRACIÓN DE USUARIOS Y FUNCIONES EN EL SISTEMA ESIGEF RUP-DS-018 No está permitida

Más detalles

Sede Electrónica de la Seguridad Social. Una vez obtenga el Informe de Vida Laboral vuelva a esta página y lea la siguiente información:

Sede Electrónica de la Seguridad Social. Una vez obtenga el Informe de Vida Laboral vuelva a esta página y lea la siguiente información: Page 1 of 6 S e g u r i d a d S o c i a l Buscar Introduzca texto sede Electrónica Inicio Ciudadanos Empresas y Profesionales Administraciones y Mutuas Tablón de Edictos y Anuncios Mi sede electrónica

Más detalles

Anexo del Manual de instrucciones

Anexo del Manual de instrucciones Cover1-4 Anexo del Manual de instrucciones Máquina para cortar Product Code (Código de producto): 891-Z01 Visítenos en http://support.brother.com donde hallará consejos para la solución de problemas así

Más detalles

Estructuras de datos Solemne 2

Estructuras de datos Solemne 2 Estructuras de datos Solemne 2 Profesores: Luis Bastías, Rodrigo Paredes, Iván Zuñiga Ayudantes: Patricia Albornoz, Francisco Claude, Hans Ulloa Sin apuntes, 1:30 horas P1. Transpose Lists Utilizando listas

Más detalles

Cursos Propedéuticos 2015

Cursos Propedéuticos 2015 Listas Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores http://ccc.inaoep.mx/~rcumplido/ Contenido de la sección Listas Principales operaciones Listas secuenciales vs Listas ligadas

Más detalles

BASE DE DATOS CON EXCEL 2007

BASE DE DATOS CON EXCEL 2007 BASE DE DATOS CON EXCEL 2007 VALIDACIÓN DE DATOS La validación de datos es muy similar al formato condicional, salvo que esta característica tiene una función muy concreta y es validar el contenido de

Más detalles

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol Árboles Las listas enlazadas, pilas y colas son estructuras de datos lineales (es decir, secuencias). Un árbol es una estructura de datos bidimensional no lineal, con propiedades especiales. Los nodos

Más detalles

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante Prácticas de C++ Practica Nº 4 Fundamentos de Programación Informática II Prof. Dr. Paul Bustamante Practica Nº 4 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Números Perfectos....

Más detalles

MANUAL DE EXCEL AVANZADO

MANUAL DE EXCEL AVANZADO MANUAL DE EXCEL AVANZADO 1. CONSOLIDACIÓN DE CONCEPTOS... 1 1.1. FÓRMULAS (BUENAS PRÁCTICAS)... 1 1.1.1. Tipos de operandos... 1 1.1.2. Tipos de operadores... 2 1.1.3. PRECEDENCIA DE OPERADORES ARITMÉTICOS...

Más detalles

Programación de sistemas Listas enlazadas

Programación de sistemas Listas enlazadas Programación de sistemas Listas enlazadas Departamento de Ingeniería Telemática 1 Contenidos *** Introducción a los genéricos Estructuras de datos Listas enlazadas La clase Node La clase LinkedList Ventajas

Más detalles

Tema 04: TAD Lista. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 04: TAD Lista. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 04: TAD Lista M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom (Prof. Edgardo A. Franco) 1 Contenido TAD Lista Descripción del TAD Lista

Más detalles

NIVEL 14: ESTRUCTURAS DE ACCESO DIRECTO

NIVEL 14: ESTRUCTURAS DE ACCESO DIRECTO NIVEL 14: ESTRUCTURAS DE ACCESO DIRECTO Tablas de Hashing 2 Tablas de hashing Motivación y definiciones Posibles estructuras de implementación Área primaria y área de desbordamiento Funciones de hashing

Más detalles

Editor y manejo de Datos en SPSS. Favio Murillo García

Editor y manejo de Datos en SPSS. Favio Murillo García Editor y manejo de Datos en SPSS Favio Murillo García Cómo utilizar la ayuda El SPSS cuenta con un completo sistema de ayuda al que puede accederse desde cualquier ventana o cuadro de diálogo. Este sistema

Más detalles