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

Cuestiones y dudas acerca de lenguajes de programación diversos.

Moderador: Moderadores

Mathias
Junior
Mensajes: 9
Registrado: Lun Nov 08, 2010 2:06 am

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

Mensaje por Mathias » Mar Abr 24, 2012 4:50 am

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

Avatar de Usuario
Eze

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

Mensaje por Eze » Dom May 06, 2012 3:23 pm

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

Responder