Listas ortogonales

En este tipo de lista se utiliza para representar matrices. Los nodos contienen cuatro apuntadores. Uno para apuntar al nodo izquierdo (li),otro para apuntar al derecho(ld), otro al nodo inferior(lb) y por último un apuntador al nodo superior(la).

Creación de una lista ortogonal

top<--nil
mensaje(número de renglones)
lee(númreo_renglones)
mensaje(número de columnas)
lee(número_columnas)
desde y=1 hasta número_renglones haz
	new(p)
	lee(p(dato))
	p(li)<--p
	p(ld)<--p
	si top=NIL entonces
		top<--p
		top(lb)<--p
	en caso contrario
		p(la)<--top(la)
		p(lb(la))<--p
		p(lb)<--top
	top(la)<--p
q<--top
desde y=1 hasta número_columnas-1 haz
	s<--NIL
	desde j=1 hasta número_renglones haz
		new(q)
		p(ld)<--q
		p(li)<--q(li)
		p(ld(li))<--p
		q(li)<--p
		si s=NIL entonces
			s<--p
			p(la)<--p
			p(lb)<--p
		en caso contrario
			p(la)<--s(la)
			p(lb(la))<--p
			p(lb)<--s
			s(la)<--p
		q<--q(lb)

Algoritmo para recorrer una lista ortogonal

q<--top
repite
      p<--q
      repite
            escribe(p(dato))
             p<--p(ld)
       hasta p=q
       q<--q(lb)
hasta q=top

Borrado en listas ortogonales

q<--top
mensaje(valor a borrar)
lee(valor_a_borrar)
repite
       p<--q
       repite
             si p(dato)=valor_a_borrar entonces
		si p=top entonces
			p(dato)<-- -999
		en caso contrario
			aux<--p
			p(ld(li))<--p(ld)
			p(li(ld))<--p(li)
			p(la(lb))<--p(la)
			p(lb(la))<--p(lb)
			dispose(aux)
			p<--q
              en caso contrario
		p<--p(ld)
       hasta p=q
       q<--q(lb)
hasta q=top

Fuente: Apunte de Estructura de Datos del Instituto tecnológico de la Paz