listas enlazadas c n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Listas enlazadas c++ PowerPoint Presentation
Download Presentation
Listas enlazadas c++

Loading in 2 Seconds...

play fullscreen
1 / 12

Listas enlazadas c++ - PowerPoint PPT Presentation


  • 184 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Listas enlazadas c++' - juliana


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
listas enlazadas c
Listas enlazadas c++

Prof. Franklin Cedeño

slide2

Contenido

  • Fundamentos teóricos
  • Operaciones en listas enlazadas
  • Resumen
  • Ejercicios
  • Problemas

Prof. Franklin Cedeño

slide3

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

slide4

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

slide5

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

slide6

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

slide7

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

slide8

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

slide9

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

slide10

#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

slide11

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

slide12

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