Listas enlazadas

21
ESTRUCTURAS DE DATOS Listas Enlazadas

description

trabajo

Transcript of Listas enlazadas

  • ESTRUCTURAS DE DATOS

    Listas Enlazadas

  • Listas enlazadas

    Definicin

    Una lista enlazada tambin recibe el nombre de "lista concatenada", "lista eslabonada" o "lista lineal".

    Una lista enlazada es una coleccin de elementos llamados nodos. Cada nodo contiene un dato y una referencia al siguiente nodo.

  • Listas enlazadas

    23

    Cada nodo se representa por medio de dos campos:

    Campo dato: contiene el valor del nodo

    Campo siguiente: indica cul es el nodo con el que se enlaza

    dato siguiente

    99

    dato siguiente

  • Listas enlazadas

    23 6 99

    Lista enlazada con 3 nodos.

    Los nodos tienen datos de tipo entero.

    Nodo 1

    Dato: 23

    Siguiente: Nodo 2

    Nodo 2

    Dato: 6

    Siguiente: Nodo 3

    Nodo 3

    Dato: 99

    Siguiente: null

    (indica que es el fin de

    la lista)

  • Listas enlazadas

    oscar kate sarah

    Lista enlazada con 3 nodos.

    Los nodos tienen datos de tipo String.

    Nodo 1

    Dato: oscar

    Siguiente: Nodo 2

    Nodo 2

    Dato: kate

    Siguiente: Nodo 3

    Nodo 3

    Dato: sarah

    Siguiente: null

  • Listas enlazadas

    Definicin

    Una lista enlazada es una estructura de datos dinmica que permite almacenar cualquier cantidad de nodos

    Las operaciones sobre una lista enlazada son:

    Crear listaInsertar nodo (Inicio, Final, Interno?)Eliminar nodo (Inicio, Final, Interno?)Listar datos

  • Listas enlazadas

    Definicin

    E A R E

    Al primer nodo se le llama cabecera o inicio y sirve como punto de referencia en la lista.

  • Listas enlazadas

    Crear lista

    X

    Al crear una lista, se crea el nodo cabecera.

    El nodo cabecera tiene como siguiente null.

  • Listas enlazadas

    Insertar nodo al inicio

    W

    X W

    Se crea un nuevo nodo con el

    dato que se desee colocar y con

    siguiente null

    El campo siguiente del nodo

    cabecera pasa de ser null a ser el

    nodo que estamos insertado

  • Listas enlazadas

    Insertar nodo al inicio( La lista no est vaca)

    X W

    Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera

    Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando

    X A W

    Inicio

    Inicio

  • Listas enlazadas

    Eliminar nodo al inicio

    X A W

    A W

    Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo

  • Listas enlazadas

    Est una lista vaca?

    Cuando la lista est vaca el nodo inicial es NULL

  • Listas enlazadas

  • Listas enlazadas

    Cada nodo se

    representa por medio

    de dos campos:

    Campo dato: contiene el valor del nodo

    Campo siguiente:indica cul es el nodo

    con el que se enlaza

    class Nodo{

    Object dato;

    Nodo siguiente;

    Nodo(Object o)

    {

    dato=o;

    siguiente=null;

    }

    Nodo(Object o, Nodo n){

    dato=o;

    siguiente=n;

    }

    }

  • Listas enlazadas

    Crear lista

    Al crear una lista, el nodo inicial referencia a NULL

    class Lista{

    Nodo cabecera;

    Lista()

    {

    cabecera = null;

    }

    . . .

    }

  • Listas enlazadas

    Est una lista vaca?

    Cuando la lista est

    vaca el campo

    siguiente de la

    cabecera es null

    public boolean estaVacia(){

    if (cabecera==null)

    {

    return true;

    }

    else

    {

    return false;

    }

    }

  • Listas enlazadas

    Insertar nodo al inicio( La lista est vaca)

    Se crea un nuevo nodo con el

    dato que se desee colocar y con

    siguiente null

    El campo siguiente del nodo

    cabecera pasa de ser null a ser el

    nodo que estamos insertado

    void insertar(Object o)

    {

    Nodo nuevo=new Nodo(o);

    if ( estaVacia() )

    {

    cabecera=nuevo;

    }

  • Listas enlazadas

    Insertar nodo al inicio( La lista no est vaca)

    Se crea un nuevo nodo con el dato que se desee colocar y en su campo siguiente se establece el siguiente del nodo cabecera

    Al nodo cabecera se le asigna como siguiente el nodo que estamos insertando

    nuevo=new Nodo(o);

    if ( estaVacia() ){

    cabecera=nuevo;

    }else{

    nuevo.siguiente=cabecera;

    cabecera=nuevo;

    }

    }

  • Listas enlazadas

    Eliminar nodo al inicio

    Al nodo cabecera se le asigna como siguiente, el siguiente del primer nodo

    public void eliminar()

    {

    Nodo borrar=cabecera;

    cabecera =borrar.siguiente;

    borrar = null;

    }

  • Listas enlazadas

    Imprimir datospublic void imprimir()

    {

    Nodo actual=new Nodo(null);

    if (estaVacia())

    System.out.println(La lista esta vacia");

    else

    {

    actual=cabecera;

    System.out.println("\n");

    while( actual != null){

    System.out.print( actual.dato );

    actual=actual.siguiente;

    }

    }

    }

  • Listas enlazadas