ejemplos de lista enlazadas
clase nodo
texto info
nodo *siguiente
fin clase
Nota: El asterisco (*) indica que se usara como puntero el acceso a los datos un puntero y no a su dirección es (^)
Algoritmo de creación de lista al con inserción al final
nodo *p, *top, *q /*top es un puntero al inicio de lalista de nodos*/
numero respuesta /*q es de tipo puntero a nodo*/
top = nil
respuesta = 1
mientras (respuesta = 1)
crear p
leer p^.info
si (top = nil) entonces
top = p
q = p
sino
q^.siguiente = p
p^.siguiente = nil
q = p
fin si
mostrar “Otro nodo? (si=1mostrar no=0)”
leer respuesta
fin mientras
Algoritmo de creaciónde lista al con inserción al inicio
nodo *top, *p /*top es un puntero al inicio de la lista de nodos*/
numero respuesta /*donde p es de tipo puntero a nodo*/
top = nil
respuesta = 1
mientras ( respuesta = 1)
crear p
leer p^.info
si (top = nil) entonces
top = p
sino
p^.siguiente = top
top = pmostrar
fin si
mostrar “Otro nodo? (si=1mostrarno=0)”
leer respuesta
fin mientras
Algoritmo para Recorrido
nodo *p, *top /*top es un puntero al inicio de una lista*/
p = top
mientras (p ≠ NULL)
mostrar p^.info
p = p^.siguiente
fin mientras
Ejercicios
Solucion ejercicio 1
Algoritmo para insertar un nodo antes / después de 'X' información
Antes
Consideraciones
La lista ya existe y está ordenadaInsertar_antes_de_x (texto x , nodo *top )
nodo *p, *q, *r
texto x
p = top
mientras (p ≠ nil)
si (p^.info = x) entonces
crear ( q )
q^.info = x
q^.siguiente = p
si (p = top) entonces
top = q
sino
r^.siguiente = q
fin si
sino
r = pmostrar
p = p^.siguiente
fin si
fin mientras
Solucion ejercicio 2
DespuesInsertar_despues_de_x (texto x , nodo *top )
nodo *p, *q, *r
texto x
p = top
mientras (p ≠ nil)
si (p^.info = x) entonces
crear ( q )
q^.info = x
si (p = top ó p^.siguiente=nil) entonces
p^.siguiente = q
q^.siguiente = nil
si no
q^.siguiente = p^.siguiente
p^.siguiente = q
fin si
si no
p = p^.siguiente
fin sifin mientras
Solucion ejercicio 3
Consideraciones
La lista esta ordenada
El dato del nodo es de tipo texto se hara una comparación de tipo alfabética o carácter.
La comparación será si p^.info < x
Insertar_ordenado_despues_de_x (texto x , nodo *top )
nodo *p, *q, *r
texto x
p = top
mientras (p ≠ nil)
si (p^.info < x) entonces
crear ( q )q^.info = x
si (p = top ó p^.siguiente=nil) entonces
p^.siguiente = q
q^.siguiente = nil
si no
q^.siguiente = p^.siguiente
p^.siguiente = q
fin si
si no
p = p^.siguiente
fin si
fin mientras
Solucion ejercicio 4
Algoritmo para borrar un nodo que tiene el dato ‘X’
Consideraciones
La lista esta ordenada
El dato del nodoes de tipo texto se hara una comparación de tipo alfabética o carácter.
eliminar_ordenado (texto x , nodo *top )
nodo *p, *q, *r
texto x
p = top
mientras (p ≠ nil)
si (p^.info = x) entonces
si (p = top) entonces
si (p^.siguiente = nil) entonces
top = nil
si no
top = top^.siguiente
fin si
si no
q^.siguiente = p^.siguiente
p = nil /* borrar p es hacer que apunte a nil*/
fin si
si no
q = pmostrar
p = p^.siguiente
fin si
fin mientras
Solucion ejercicio 5
Juntar dos listas odernadas en una tercera
/*top1 es un puntero al inicio de una lista1*/
/*top2 es un puntero al inicio de una lista2*/
/*inicio es un puntero al inicio de la nueva lista*/...
Regístrate para leer el documento completo.