1 / 12

Listas enlazadas c++

Listas enlazadas c++. Prof. Franklin Cedeño. Contenido. Fundamentos teóricos Operaciones en listas enlazadas Resumen Ejercicios Problemas. Prof. Franklin Cedeño. INTRODUCCIÓN.

juliana
Download Presentation

Listas enlazadas c++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. DECLARACION DE UN NODO Una listaenlazada 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

  10. #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

  11. 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

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

More Related