Diseño de Algoritmos. Curso 02-03. J.L. Leiva O. TEMA3TEMA3 TEMA3TEMA3 Estructuras Dinámicas Contenido del Tema Profesor: José Luis Leiva Olivencia. Despacho:

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Listas enlazadas c++ Prof. Franklin Cedeño.
Estructuras de datos y algoritmos
Programación I Teoría IV
Direcciones, Arreglos y Argumentos de Funciones
Estructuras de datos. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
9A9A9A9A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática.
Tema 1. Introducción a la programación (Lenguaje java).
Tratamiento de listas en Java
Listas. Conceptos Generales..
Funcionamiento, programación
PROGRAMACION DE ESTRUCTURAS DE DATOS
Estructuras Compuestas.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Unidad 3 Punteros.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Herramientas para el acceso directo a memoria en C++
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Estructuras dinámicas de datos, TAD Lista, parte 2
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Listas circulares.
Diseño de algoritmos “Punteros”
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Archivos Binarios Lenguaje C Prof. Gonzalo Pastor.
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Estructuras.
Clase 10: Estructuras de datos y arreglos.
Listas enlazadas.
Estructura de Datos y Algoritmos
Unidad VI Registros (estructuras, uniones y enumeraciones)
Programación I Técnico Universitario en Web Dpto. de Informática FCFMyN - UNSL -11-
PUNTEROS Ing Anghello Quintero.
1 Estructuras de Datos Elementales:stacks (pilas), queues (colas), linked lists (listas enlazadas), y rooted trees (árboles con raíz) Agustín J. González.
Estructuras de Datos Dinámicas: Listas Programación I Departamento de Informática Universidad Nacional de San Luis Argentina 2014.
Estructuras con punteros: Nodos y Listas. Fichas ordenas en orden alfabético y por otro criterio, usando hilos : hilo de inicio : hilo de ficha : hilo.
Aplicación de estructuras de datos
Universitarios: Ricardo Gonzales Jimenez Wilfredo Coca Reinaldo Yohan Docente: Lic. Israel Torrez Valverde Tema: Listas doblemente Enlazadas.
Memoria estática versus dinámica con Estructuras
Programación en C para electrónicos
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
PUNTEROS Y REFERENCIAS
APUNTADORES.
Unidad 4: LISTAS.
Memoria dinámica con Estructuras. Memoria dinámica ¿Qué hacer cuando las variables declaradas son insuficientes o cuando no se conoce anticipadamente.
Los punteros Programación modular.
Computación II Capitulo VII Punteros. Presentación de la unidad Objetivos: –Ser capaces de utilizar punteros. –Comprender las relaciones entre punteros,
Contenido:  ¿Qué son los Punteros?  Los Procedimientos: New y Dispose.
Registros Departamento de Computación
INSTITUTO TECNOLOGICO DE APIZACO
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
LENGUAJE “C” Programación.
Estructuras con punteros: Nodos y Listas. Un programa C.
PROGRAMACION DE Pilas o Stacks
M.C. Meliza Contreras González
Laboratorio de programación
Laboratorio de programación Luisa Fernanda Rincón Pérez
PROGRAMACION DE Pilas o Stacks y Colas
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
Listas Dinámicas.
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada TIPOS ABSTRACTOS DE DATOS TAD Tema: TIPOS ABSTRACTOS DE DATOS TAD Subtema: LISTAS.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Transcripción de la presentación:

Diseño de Algoritmos. Curso J.L. Leiva O. TEMA3TEMA3 TEMA3TEMA3 Estructuras Dinámicas Contenido del Tema Profesor: José Luis Leiva Olivencia. Despacho: I-326-D (El Ejido) (Complejo Tecnológico) 3.1. Introducción a las estructuras de datos dinámicas Punteros Operaciones sobre listas enlazadas.

Diseño de Algoritmos. Introducción a las Estructuras de Datos Dinámicas Variables estáticas: –Se conoce su nombre. –Se conoce cuando empieza/acaba su existencia. –Se conoce el espacio que ocupan en memoria.

Diseño de Algoritmos. Introducción a las Estructuras de Datos Dinámicas Problema ¿Que sucede si a priori no conocemos la cantidad de espacio de almacenamiento que vamos a precisar? Solución Hacer una previsión?? Ejemplo: Tipos Struct persona {char nombre[30]; int edad;} Variables Struct persona poblacion[30];

Diseño de Algoritmos. Introducción a las Estructuras de Datos Dinámicas Variables anónimas: –No se conoce su nombre. –No se conoce el momento en que empieza/acaba su existencia. –El espacio que van a ocupar en memoria es variable.

Diseño de Algoritmos. PUNTEROS ¿Que Es un Puntero? Variable Estática Un puntero es una variable que almacena una dirección de memoria

Diseño de Algoritmos. Declaración de Punteros Tipos typedef int *ptrint; /*puntero a enteros*/ Variables ptrint p; /*puntero a enteros*/ Variables int *p; /*puntero a enteros*/ 1ª FORMA2ª FORMA

Diseño de Algoritmos. Declaración de Punteros Typedef struct { int num; char car; } tiporegistro; Typedef tiporegistro *tipopuntero; Tipopuntero p; Así: p es la dirección de un registro con dos campos. (tipo puntero) *p es un registro con dos campos (tipo registro) (*p).num es una variable simple (tipo entero) p->num es una variable simple (tipo entero) &x es la direccion de una variable x, siendo x, por ejemplo int x; Si deseamos que una variable tipo puntero no apunte a nada, asignamos la palabra reservada NULL (p=NULL)

Diseño de Algoritmos. Variables Anónimas Variables int *ptr; MEMORIA Dirección de memoria ptr Variable Anónima Contenido de la memoria *ptr=100;

Diseño de Algoritmos. Representación Gráfica de las Variables Puntero Dirección Dirección 1ª Forma 100 ptr 2ª Forma Variable Anónima ptr

Diseño de Algoritmos. Punteros y Creación de Variables Dinámicas Inicialización de Punteros: Int *ptr; ptr := NULL Creación de una Variable Anónima: ptr=malloc(sizeof(int)); (Si no ex existiera memoria libre, devuelve un puntero NULL) Destrucción de una Variable Anónima: free(ptr); ptr ?? ptr

Diseño de Algoritmos. Punteros y Creación de Variables Dinámicas typedef tiporegistro *tipopuntero; tipopuntero p; if ((p=malloc(sizeof(tiporegistro))==NULL) {printf(“No hay memoria”); exit(1); }

Diseño de Algoritmos. Operaciones con Punteros Dereferenciación: ptr->PartReal Comparación: ptr1 == ptr2 Asignación: ptr1 = ptr2 Ejemplo: typedef struct { float partereal,partecompleja;} partescomplejas; typedef partescomplejas *complejo; complejo punt1,punt2; punt1->partereal=5.0; punt1->partcompleja=1.2: punt2=punt1;

Diseño de Algoritmos. Operaciones sobre Listas Enlazadas INICIALIZACION lista := NIL Asignar(lista,Tamaño(INFO)) lista := NIL lista ?? lista ?? lista Correcto Erróneo

Diseño de Algoritmos. Declaración de listas en C #include typedef struct nodo { int dato; struct nodo *sig; } tlista; tlista *primero;

Diseño de Algoritmos. Visualizar una Lista Algoritmo visualizaLista(Tlista *lista) Variables Tlista *recorrer; Inicio recorrer = lista MIENTRAS recorrer <> NULL HACER Escribir(recorrer->dato); recorrer = recorrer->sig FINMIENTRAS Fin

Diseño de Algoritmos. Operaciones básicas sobre listas enlazadas. Suponiendo: typedef struct nodo { int dato; struct nodo *sig; } tiponodo; typedef tiponodo *tipolista; tipolista lista; /*cabeza de la lista*/ tipolista nodo; /*nuevo nodo a insertar*/ tipolista ptr; /*puntero auxiliar*/

Diseño de Algoritmos. Insertar un Nodo al Principio Suponiendo: 1.- malloc (ptr, sizeof(tiponodo));lista 329 ptr ??

Diseño de Algoritmos. Insertar un Nodo al Principio 2.- ptr->dato:= ptr->sig:= listaptr 5 ?? ptr 5lista 329

Diseño de Algoritmos. Insertar un Nodo al Principio 4.- lista= ptrptr 5 lista 32 9

Diseño de Algoritmos. Eliminar el Primer Nodo Suponiendo: 1.- ptr = listalista 329 ptrlista 329

Diseño de Algoritmos. Eliminar el Primer Nodo 2.- lista := lista->sig; 3.- free(ptr); ptrlista 329 lista 29 ptr

Diseño de Algoritmos. Insertar un Nodo en una Lista Enlazada Ordenada Partimos de la lista: 1.- malloc(nuevoNodo,sizeof(tiponodo)) 15 Queremos insertar el número: 15lista 2919 nuevoNodo ??

Diseño de Algoritmos. Insertar un Nodo en una Lista Enlazada Ordenada 2.- nuevoNodo->dato = 15 nuevoNodo->sig := NULL 3.- Algoritmo que inserta el nodo en la posición correcta.nuevoNodo 15

Diseño de Algoritmos. Insertar un Nodo en una Lista Enlazada Ordenada Si la lista no está vacía utilizamos unm bucle similar al siguiente: while ((ptr->sig!=NULL) && (nuevonodo->dato > (ptr->sig)->dato))) ptr=ptr->sig; nodo->sig=ptr->sig; ptr->sig=nodo;

Diseño de Algoritmos. Insertar un Nodo en una Lista Enlazada Ordenada Gráficamente: nuevoNodo 15buscaPosicionlista 2919

Diseño de Algoritmos. Eliminar un Nodo de una Lista Enlazada Suponiendo: 1.- actual = lista anterior = NULL 6 Queremos borrar el número: 6 Supondremos que está en la lista. actual anterior lista 269 lista 269

Diseño de Algoritmos. Eliminar un Nodo de una Lista Enlazada 2.- Búsqueda del nodo a borrar. MIENTRAS actual->dato <> dato HACER anterior = actual actual= actual->sig FINMIENTRAS anterior actual lista 269

Diseño de Algoritmos. Eliminar un Nodo de una Lista Enlazada 3.- Actualizar los punteros SI anterior = NIL ENTONCES lista := lista->sig ENOTROCASO anterior->sig := actual->sig FINSI anterioractuallista 2 6 9

Diseño de Algoritmos. Eliminar un Nodo de una Lista Enlazada 4.- free(actual); anterior actual lista 29