Está en la página 1de 15

Lista ligada simple

(Eliminar)
Una lista ligada simple es
De esta forma
Nodo Apunta a NULL

Dato Dato Dato


p p
1 2 n

Cabeza
Para eliminar un nodo existen 3 casos a considerar.
Caso 1: Eliminar el primero de la lista
Dado la lista

A p B p C

Hacer Q=P
P es el apuntador al primer nodo de la lista.
Q es una variable de tipo apuntador
>>>Verificamos que la lista no es NULL

A p B p C

P
Hacer Q=P
Si Q -> SIGUIENTE ! = NULL // Verifica si la lista tiene slo un nodo.
entonces Hacer P= Q-> SIGUIENTE //Redefine el puntero al
inicio
Si no
Hacer P = NULL
// imprimir mensaje lista vaca.
Fin //fin de la condicin
QUITA(Q)
A p B p C

P
Hacer Q=P
Si Q -> SIGUIENTE ! = NULL // Verifica si la lista tiene slo un nodo.
entonces Hacer P= Q-> SIGUIENTE //Redefine el puntero al
inicio
Si no
Hacer P = NULL
// imprimir mensaje lista vaca.
Fin //fin de la condicin
QUITA(Q)
Como la lista no fue NULL quitamos el nodo inicial

A p B p C

P
Hacer Q=P
Si Q -> SIGUIENTE ! = NULL // Verifica si la lista tiene slo un nodo.
entonces Hacer P= Q-> SIGUIENTE //Redefine el puntero al
inicio
Si no
Hacer P = NULL
// imprimir mensaje lista vaca.
Fin //fin de la condicin
QUITA(Q)
Como la lista no fue NULL quitamos el nodo inicial

A p B p C

P
Hacer Q=P
Si Q -> SIGUIENTE ! = NULL // Verifica si la lista tiene slo un nodo.
entonces Hacer P= Q-> SIGUIENTE //Redefine el puntero al
inicio
Si no
Hacer P = NULL
// imprimir mensaje lista vaca.
Fin //fin de la condicin
QUITA(Q)
Caso 2: Eliminar el ltimo elemento de la lista.

Dado la lista

A p B p C

1. Si P -> SIGUIENTE = NULL {Verifica si la lista tiene slo un elemento}


P QUITA(P)
Hacer P = NULL
Si no // Q y T son variables de tipo apuntador
Hacer Q = P
1.1 Repetir mientras ( Q-> SIGUIENTE ! = NULL)
Hacer T=Q
Hacer Q = Q -> SIGUIENTE
1.2 Fin //fin del ciclo del paso 1.1
Hacer T -> SIGUIENTE = NULL
QUITA(Q)
2.Fin //fin del condicional del paso 1
>>>Verificamos que la lista si es o no es NULL

A p B p C

P
1. Si P -> SIGUIENTE = NULL {Verifica si la lista tiene slo un elemento}
QUITA(P)
Hacer P = NULL
Si no
Hacer Q = P
1.1 Repetir mientras ( Q-> SIGUIENTE ! = NULL)
Hacer T=Q
Hacer Q = Q -> SIGUIENTE
1.2 Fin
Hacer T -> SIGUIENTE = NULL
QUITA(Q) // Q y T son variables de tipo apuntador
2.Fin //fin del condicional del paso 1
A p B p C

P
1. Si P -> SIGUIENTE = NULL {Verifica si la lista tiene slo un elemento}
QUITA(P)
Hacer P = NULL
Si no
Hacer Q = P
1.1 Repetir mientras ( Q-> SIGUIENTE ! = NULL)
Hacer T=Q
Hacer Q = Q -> SIGUIENTE
1.2 Fin
Hacer T -> SIGUIENTE = NULL
QUITA(Q) // Q y T son variables de tipo apuntador
2.Fin //fin del condicional del paso 1
A p B p C

P
1. Si P -> SIGUIENTE = NULL {Verifica si la lista tiene slo un elemento}
QUITA(P)
Hacer P = NULL
Si no
Hacer Q = P
1.1 Repetir mientras ( Q-> SIGUIENTE ! = NULL)
Hacer T=Q
Hacer Q = Q -> SIGUIENTE
1.2 Fin
Hacer T -> SIGUIENTE = NULL
QUITA(Q) // Q y T son variables de tipo apuntador
2.Fin //fin del condicional del paso 1
Caso 3: Eliminar un nodo con valor X de la lista

1. Hacer Q = P Eliminar dato B.


2. Hacer BAND= VERDADERO
3. Repetir mientras (Q->DATOS != X) y (BAND = VERDADERO)
3.1 Si Q -> SIGUIENTE =! NULL
Hacer T = Q
Hacer Q = Q -> SIGUIENTE
Si no
Hacer BAND = FALSO
A p B p C
a. {Fin del condicional del paso 3.1}
4. {Fin del ciclo del paso 3}
5. Si BAND = FALSO

Escribir El elemento no fue encontrado P


Si no
5.1 SI P = Q {Verifica si el elemento a eliminar es el primero}
Hacer P = Q-> SIGUIENTE
Si no
Hacer T -> SIGUIENTE =Q-> SIGUIENTE
5.2 {Fin del condicional del paso 5.1}
QUITA(Q) // Q y T son variables de tipo apuntador
6. {Fin del condicional del paso 5}
// BAND es una variable de tipo booleano
1. Hacer Q = P Eliminar dato B.
2. Hacer BAND= VERDADERO
3. Repetir mientras (Q->DATOS != X) y (BAND = VERDADERO)
3.1 Si Q -> SIGUIENTE =! NULL
Hacer T = Q
Hacer Q = Q -> SIGUIENTE
Si no
Hacer BAND = FALSO
A p B p C
a. {Fin del condicional del paso 3.1}
4. {Fin del ciclo del paso 3}
5. Si BAND = FALSO

Escribir El elemento no fue encontrado


P
Si no
5.1 SI P = Q {Verifica si el elemento a eliminar es el primero}
Hacer P = Q-> SIGUIENTE
Si no
Hacer T -> SIGUIENTE =Q-> SIGUIENTE
5.2 {Fin del condicional del paso 5.1}
QUITA(Q) // Q y T son variables de tipo apuntador
6. {Fin del condicional del paso 5}
// BAND es una variable de tipo booleano
1. Hacer Q = P Se Elimino dato B.
2. Hacer BAND= VERDADERO
3. Repetir mientras (Q->DATOS != X) y (BAND =
VERDADERO)
3.1 Si Q -> SIGUIENTE =! NULL
Hacer T = Q
Hacer Q = Q -> SIGUIENTE
Si no
A p B p C
Hacer BAND = FALSO
a. {Fin del condicional del paso 3.1}
4. {Fin del ciclo del paso 3}
5. Si BAND = FALSO
P
Escribir El elemento no fue encontrado
Si no
5.1 SI P = Q {Verifica si el elemento a eliminar es el
primero}
Hacer P = Q-> SIGUIENTE
Si no
Hacer T -> SIGUIENTE =Q-> SIGUIENTE // Q y T son variables de tipo apuntador
5.2 {Fin del condicional del paso 5.1}
// BAND es una variable de tipo booleano
QUITA(Q)

También podría gustarte