Saltar a contenido

Listas

Listas Simplemente enlazadas

Definicion de un nodo


Nodo = Registro
    Dato: <tipo>
    Prox: Puntero a Nodo
Fin Registro

Prim, p, a, q: puntero a Nodo;

valor: <tipo>

Búsqueda


LEER (valor)

p:= Prim
MIENTRAS (p <> nil) y (*p.dato <> valor) HACER
    p := *p.prox
FIN MIENTRAS

SI (p <> nil) ENTONCES
    Escribir ('Se encontro el elemento')
SINO
    Escribir ('No se encontro el elemento')
FIN SI


Carga Apilada


LEER (valor)

Prim := nil
MIENTRAS (valor <> '*') HACER
    NUEVO (p)
    *p.Dato:= valor
    *p.Prox:= Prim
    Prim:= p
    LEER(valor)
FIN MIENTRAS

Carga Encolada


LEER (valor)

Prim:= nil
MIENTRAS (valor <> '*') HACER
    NUEVO (p)
    *p.Dato:= valor
    *p.Prox:= nil

    SI Prim = nil ENTONCES
        Prim := p
    SINO
        *a.Prox := p
    FIN SI
    a:=p
    LEER(valor)
FIN MIENTRAS

Carga Ordenada

Prim:= nil
A:= nil;

LEER (valor) 
NUEVO (p) 
*p.dato:= valor 
q:= Prim 

MIENTRAS (q <> nil) y (*q.dato < valor) HACER
    a:= q
    q:= *q.prox
FIN MIENTRAS

SI (a = nil) ENTONCES
    *p.prox:= Prim
    Prim:= p
SINO
    *p.prox:= q
    *a.prox:= p
FIN SI

Eliminacion


LEER (valor) 

p:= Prim

MIENTRAS (p <> nil) y (*p.dato <> valor) HACER
    a:= p
    p:= *p.prox
FIN MIENTRAS

SI (p = nil) ENTONCES
    Escribir ('Error, el valor no existe')
SINO
    SI (a = nil) ENTONCES
        Prim := *p.prox
    SINO
        *a.prox:= *p.prox
    FIN SI
    DISPONER(p)
FIN SI