Página 1 de 1

¿Qué es una celda Dummy? ¿cómo y para qué se usa?

Publicado: Mar Abr 24, 2012 4:50 am
por Mathias
Esa es la pregunta, si tengo:

Código: Seleccionar todo

TYPE
   ListNodo = POINTER TO Lista;
   Lista =      RECORD
                   info :  CHAR;
                   sig  :  ListNodo;
                END;

   Iterador = POINTER TO cledaDummy;

	celdaDummy = RECORD
			          inicio: ListNodo;
			          actual: ListNodo; 		     
                END;
En el XDS me da un error, dice "unsatisfied forward type "celdaDummy"" ¿saben por qué?

Tengo entendido que sirve para marcar el principio y la posición actual de una lista

¿Cómo se usa? Si por ejemplo, quiero marcar la posición inicial tendría que hacer:

Código: Seleccionar todo

VAR iterr : iterador; l : ListNodo
BEGIN
RETURN iterr^.inicio := l 
END
Si quiero avanzar en la lista tendría que hacer:

Código: Seleccionar todo

VAR iterr : iterador; l : ListNodo
BEGIN
RETURN iterr^.actual := iterr^.actual^.sig;
END
Solo me movería con el iterador, no tocaría la lista, la lista igualmente se puede controlar desde "l" y no desde "iterr" para agregarle elementos por ejemplo?

Y para devolver un dato de la lista tendría que usar:

Código: Seleccionar todo

VAR iterr : iterador; l : ListNodo
BEGIN
RETURN iterr^.actual^.info
END
No encontré nada de esto en internet, no se si tendrá otro nombre.

Saludos

Re: ¿Qué es una celda Dummy? ¿cómo y para qué se usa?

Publicado: Dom May 06, 2012 3:23 pm
por Eze
Fijate que iterador = POINTER TO cledaDummy

esta mal escrito celdaDummy, es por eso que no te funciona.

Eso que nombras no es una celda dummy (eso es una celda vacia, sin ningun dato y con la misma estructura que la lista principal pero que apunta al comienzo de la lista). De lo que vos hablas es una lista con manejo implicito de posicion.
Lo que hace actual es seńalar en que celda estas parado, y vos podes manipular eso mediante diferentes funciones.

Pd: antes de avanzar actual convendria chequear que actal no sea NIL (o NUL), sino habria un error. Aunque eso lo podes tener en cuenta al llamarla, es decir, como precondicion, lo que te parezca mejor y mas conveniente a vos.

Eze