Multilistas


Definição: É um tipo de lista onde cada nó contém mais de um apontador.

Logo, um lista duplamente encadeada é um exemplo de multilista (lista com ligações múltiplas).

Outro exemplo é conhecido como matriz esparsa, na qual o nó será alocado quando a posição receber um valor. Uma das vantagens dessa estrutura é a economia de espaço quando o número de elementos da matriz preenchidos é bem menor que a da matriz esparsa.

Quando a matriz não é esparsa, perde-se bastante espaço pois é necessário armazenar para cada nó, além do valor em si:

Dada a matriz com valores 2 (2,2), 3 (2,3) -2 (3,1) e 8 (3,3), mostrada abaixo:

0 0 0
0 2 3
-2 0 8

Teríamos graficamente a estrutura:

 

Para ver uma implementação de uma Matriz Esparsa, abra a unit MatEsp e para um programa que demonstra como usá-la, veja DMatEsp.

O procedimento Inicializar cria a linha 0 e a coluna 0 e ajusta os apontadores. Supondo que desejamos criar uma matriz esparsa com 3 linhas e 2 colunas, ao chamarmos Inicializar, teríamos a matriz abaixo:

A função ObterAcima retorna o apontador para o nó que está acima da linha e da coluna especificados. Da mesma forma, A função ObterEsquerda retorna o apontador para o nó que está à esquerda da linha e da coluna especificados. Em ambos os casos, quando o nó não existir, o apontador retornado é necessário para inserir o nó naquela posição.