Listas enlazadas c++ Prof. Franklin Cedeño.

Slides:



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

2. Manejo de memoria Manejo de memoria estática
Abstracción de Datos Arrays.
Ejemplo de Programa C++
TDA LISTA ESTRUCTURAS DE DATOS.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Programación II Listas
Estructuras de datos y algoritmos
Funciones. Programación, Algoritmos y Estructuras de Datos.
Tipos de Datos Básicos y Estructurados
Tema 1. Introducción a la programación (Lenguaje java).
Tratamiento de listas en Java
Listas. Conceptos Generales..
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Teoría de lenguajes y compiladores
Implementación de Listas
ESTRUCTURAS DE SECUENCIA
Unidad 3 Punteros.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Vectores en java.
Estructuras dinámicas de datos, TAD Lista, parte 2
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Tema 6: Clases Antonio J. Sierra.
Listas circulares.
Tema 9 Estructuras.
ÁRBOLES BINARIOS DE BÚSQUEDA
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Curso Programación en Java
Capítulo 5. Punteros y Cadenas de Caracteres
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Archivos.
1 3Tablas o matrices 3.1. Concepto Las tablas corresponden al concepto matemático de matriz. Todos sus elementos deben ser del mismo tipo y se accede a.
Estructura de Datos y Algoritmos
Clase 10: Estructuras de datos y arreglos.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Listas enlazadas.
Unidad VI Registros (estructuras, uniones y enumeraciones)
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.
Aplicación de estructuras de datos
Pilas y Colas Estructuras de Datos.
Introducción a los punteros Prof. Domingo Hernández.
Árboles Binarios Estructuras de Datos.
Unidad II Introducción a la programación en C++
Informática Ingeniería en Electrónica y Automática Industrial
Universitarios: Ricardo Gonzales Jimenez Wilfredo Coca Reinaldo Yohan Docente: Lic. Israel Torrez Valverde Tema: Listas doblemente Enlazadas.
Laboratorio Análisis y Diseño de Algoritmos 2 Biblioteca estándar de templates de C++ Standard Template Library (STL)‏ Motivación Ejemplo: Lista + Iterador.
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
Diseño de Algoritmos. Curso J.L. Leiva O. TEMA3TEMA3 TEMA3TEMA3 Estructuras Dinámicas Contenido del Tema Profesor: José Luis Leiva Olivencia. Despacho:
APUNTADORES.
Unidad 4: LISTAS.
Punteros Recomendado: 1. Nivelación Funciones
Son estructuras de datos que almacenan y recuperan sus elementos atendiendo a un estricto orden (LIFO Last – in, first –out Ultimo en entrar – primero.
Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
INSTITUTO TECNOLOGICO DE APIZACO
Algoritmos y Estructuras de datos Listas Doblemente enlazadas
 Introducción  Conceptos El equipo demostrara y mostrara los conceptos, definición y funcionamiento de una las “listas doblemente enlazadas y circulares”
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
M.C. Meliza Contreras González
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.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
Listas Dinámicas.
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.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
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.
Transcripción de la presentación:

Listas enlazadas c++ Prof. Franklin Cedeño

Contenido Fundamentos teóricos Operaciones en listas enlazadas Resumen Ejercicios Problemas Prof. Franklin Cedeño

INTRODUCCIÓN A diferencia de las estructuras de datos estáticas (arrays vectrores, matrices y estructuras) en la que el tamaño en memoria se establece durante la compilación del programa y permanece inalterable durante su ejecucion, las estructuras de datos dinamias crecen y se contraen a medida que se ejecuta el programa. La estructura de datos Listas Enlazadas, que es una colección de elementos( denominados nodos) dispuestos unos a continuación de otros, cada uno de ellos conectados al siguiente elemento por un enlace o puntero. Las listas enlazadas son estructuras de datos muy flexibles y con numerosas aplicaciones en el mundo de la programación Prof. Franklin Cedeño

FUNDAMENTOS TEÓRICOS Cuando estudiábamos estructuras lineales de elementos homogéneos (Listas, tablas, vectores) y se utilizaban arrays para su implementación . Esta técnica obligaba a fijar por adelantado el espacio de memoria, de modo que cuando se desea añadir un nuevo elemento que rebase el tamaño establecido, no seria posible sin que ocurra un error en tiempo de ejecución. Ello se debe a que los arrays hacen un uso ineficiente de la memoria. 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 por un <<enlace>> o <<puntero>>. La idea básica es construir una lista cuyos elementos llamados nodos se se componen de dos partes o campos: la primera parte o campo contiene la información y es por consiguiente , un valor de tipo genérico (denominado dato, TipoElemento, etc) y la segunda parte o campo en un puntero que apunta al siguiente elemento de la lista. Nodo puntero Nodo puntero Nodo Prof. Franklin Cedeño

FUNDAMENTOS TEÓRICOS La representación gráfica más extendida es aquella que utiliza una caja con dos secciones en su interior. En la primera sección se escribe el elemento o valor del dato y en la segunda sección el enlace o puntero mediante una flecha que sale de la caja y apunta al nodo siguiente e1 e2 e3 en Una lista enlazada consta de un numero indeterminado de elementos y cada elemento tiene dos componentes (campos), un puntero al siguiente elemento de la lista y un valor, que pude ser de cualquier tipo . Prof. Franklin Cedeño

FUNDAMENTOS TEÓRICOS Clasificación de las listas enlazadas Listas simplementes enlazadas: cada nodo (elemento) contiene un unico en lace que conecta ese al nodo siguiente o sucesor. La lista en eficiente para recorridos directos.(<<adelante>>). Lista doblemente enlazadas: cada nodo contiene dos enlaces, uno a su nodo predecesor y el otro a su sucesor. La lista es eficiente tanto en recorrido directo (<<adelante>>) como en recorrido inverso (<<atrás>>). Lista circular simplemente enlazada: en la que el ultimo elemento (cola) se enlaza con el primer elemento (cabeza) de tal modo que la lista pude ser recorrida de modo circular. Lista circular doblemente enlazada: el ultimo elemento se enlaza con el primero y viceversa. Esta lista puede ser recorrida de modo circular tanto en dirección directa (<<adelante>>) como inversa (<<atrás>>). Prof. Franklin Cedeño

CONCEPTOS IMPORTANTES Una lista enlazada consta de un conjunto de nodos. Un nodo consta de un campo dato y un puntero que apunta al <<siguiente>> elemento de lista. dato siguiente dato siguiente dato siguiente dato Ptr_actual cola cabeza El primer nodo, frente , es el nodo apuntado por cabeza. La lista encadena nodos juntos desde el frente al final (cola) de la lista. El final se identifica como el nodo cuyo campo puntero tiene valor NULL=0. La lista se recorre desde el primer hasta el ultimo nodo; en cualquier punto del recorrido la posición actual se referencia por el puntero Ptr_actual. En el caso que la lista no contiene nodo, el puntero cabeza en nulo. Prof. Franklin Cedeño

OPERACIONES EN LISTAS ENLAZADAS Inicialización o creación, con declaración de los nodos Insertar elementos en la lista Eliminar elementos en la lista Buscar elementos en la lista Recorrer la lista Comprobar si la lista esta vacía Prof. Franklin Cedeño

DECLARACION DE UN NODO Una lista enlazada se compone de una serie de nodos enlazadas mediante punteros. Cada nodo es una combinación de dos partes: un tipo de dato (entero, real, double, carácter, etc) y un enlace (puntero) al siguiente nodo. En C++ se puede definir un nodo mediante un nuevo tipo de dato con las palabras reservadas struct o class que contienen las dos partes citadas. class nodo { public : int dato; nodo *enlace; //constructor }; struct nodo{ int dato; nodo *enlace; }; Prof. Franklin Cedeño

Ejemplo: Prof. Franklin Cedeño #include <iostream> using namespace std; // creo la estructura nodo struct nodo{ int nro; nodo *sgte; }; struct nodo *pi,*pa,*pf; // declaramos tres punteros de tipo nodo void insertar(int numero){ // funcion insertar if(pi==NULL){ pi=new(nodo); pi->nro=numero; pf=pi; } else { pa=new (nodo); pf->sgte=pa; pa->nro=numero; pf=pa; pf->sgte=NULL; void mostrar(){ pa=pi; while(pa!=NULL) { cout<<endl<<"---> Numero: "<<pa->nro; pa=pa->sgte; //c=c+1; Ejemplo: Prof. Franklin Cedeño

int main(int argc, char **argv) { int numero; string resp; resp="s"; while(resp=="s" or resp=="S"){ cout<<"-----> Ingrese un numero: "; cin>>numero; insertar(numero); cout<<"Desea continuar s/n: "; cin>>resp; } mostrar(); return 0; Ejemplo: Prof. Franklin Cedeño

Bibliografía: Programación en C++ . Algoritmos, estructura de datos y objetos. 2.da edición 2006. Luis Joyanes Aguilar. Consultar: http://novella.mhhe.com/sites/8448156455/information_center_view0/ Prof. Franklin Cedeño