Estructura de Datos : Lista Generalizada


Definiciones


Nodos

Las listas generalizadas se pueden representar con la siguiente arquitectura de nodo :

     +-------------------------------------------+
     |     TAG     |     DATA     |     LINK     |
     +-------------------------------------------+
donde TAG = 0 si es un elemento atomo y TAG = 1 si es un elemento lista.


Ejemplos

Ejemplo 1

   +---+     +-----------+                                     +-----------+
 A | *-----> | 1 | * | --------------------------------------> | 1 | * | 0 |
   +---+     +-----|-----+                                     +-----|-----+
                   |                                                 |
                   |                                                 |
                   |        +-----------+      +-----------+         |        +-----------+      +-----------+
                   +------> | 0 | a | *------> | 0 | b | 0 |         +------> | 1 | * | *------> | 0 | e | 0 |
                            +-----------+      +-----------+                  +-----|-----+      +-----------+
                                                                                    |
                                                                                    |
                                                                                    |        +-----------+      +-----------+
                                                                                    +------> | 0 | c | *------> | 0 | d | 0 |
                                                                                             +-----------+      +-----------+

Ejemplo 2

 +----->    +---+     +-----------+      +-----------+
 |        A | *-----> | 0 | a | -------> | 1 | * | 0 |
 | +--->    +---+     +-----------+      +-----|-----+
 | |                                           |
 | |                                           |
 | |                                           |            +-----------+      +-----------+
 | |                                           +----------> | 0 | b | *------> | 0 | c | 0 |
 | |                                                        +-----------+      +-----------+
 | +-------------------------------------------+
 |                                             |
 +--------------------------+                  |
                            |                  |
            +---+     +-----|-----+      +-----|-----+      +-----------+
          B | *-----> | 1 | * | --|----> | 1 | * | -------> | 1 | 0 | 0 |
            +---+     +-----------+      +-----------+      +-----------+



    +------------------------------------------+
    |                                          |
    |                                          |
    |       +---+     +-----------+      +-----|-----+
    +---> C | *-----> | 0 | a | --|----> | 1 | * | 0 |
            +---+     +-----------+      +-----------+




            +---+
          D | 0 |
            +---+


Tipos

Listas Normales

El ejemplo 1 muestra una lista generalizada normal.

Listas Compartidas

El ejemplo 2 muestra una lista generalizada compartida, la A.

Listas Recursivas

El ejemplo 2 muestra una lista generalizada recursiva, la C.


Polinomios

El diseno de los nodos de esta aplicacion puede ser :

La segunda alternativa se obtiene factoreando por la primer variable, luego por la segunda variable, luego por la tercer variable y asi siguiendo, hasta agotar todas las variables. En el dibujo que sigue omitiremos el campo TAG por simplicidad. Utilizaremos, ademas, un nodo cabeza por cada polinomio basico, y el campo COEF almacenaremos la variable factoreada, siendo, en este caso, el campo EXPO irrelevante.
             +-----------+     +-----------+                                                              +-----------+
P(x,y,z) --> | z | - | ------->| * | 2 | *--------------------------------------------------------------> | * | 1 | 0 |
             +-----------+     +-----------+                                                              +-|---------+
                                 |                                                                          |
                                 V                                                                          V
                               +-----------+      +-----------+      +-----------+                        +-----------+      +-----------+      +-----------+
                               | y | - | *------> | * | 3 | *------> | * | 2 | 0 |                        | y | - | *------> | * | 4 | *------> | * | 4 | 0 |
                               +-----------+      +-|---------+      +-|---------+                        +-----------+      +-|---------+      +-----------+
                                                    |                  |                                                       |                         |
                                                    |                  V                                                       |                         V
                                                    |                +-----------+      +-----------+                          |                +-----------+      +-----------+
                                                    |                | x | - | *------> | 3 | 8 | 0 |                          |                | x | - | *------> | 2 | 0 | 0 |
                                                    |                +-----------+      +-----------+                          |                +-----------+      +-----------+
                                                    |                                                                          |
                                                    V                                                                          V
                                                  +-----------+      +-----------+      +-----------+                        +-----------+      +-----------+      +-----------+
                                                  | x | - | *------> | 1 |10 | *------> | 2 | 8 | 0 |                        | x | - | *------> | 1 | 4 | *------> | 6 | 3 | 0 |
                                                  +-----------+      +-----------+      +-----------+                        +-----------+      +-----------+      +-----------+