Conforme o prometido no artigo Listas Simplesmente Ligadas e Exemplo de Implementação em C da passada edição, aqui está o artigo das listas duplamente ligadas. Uma vez que este se engloba num mesmo tema, certos aspectos podem tornar-se um pouco repetitivos, isto porque a única diferença no nó entre os dois tipos de listas referidos é um apontador adicional nas segundas.
Para começar, vamos estudar as vantagens das listas duplamente face às simplesmente ligadas. Se bem se lembram uma lista simplesmente é possível percorre-la apenas num sentido. Nas que vamos ver de seguida é possível percorrê-las em ambos os sentidos e é essa a principal diferença entre o modo de funcionamento das segundas. Esta diferença é muito vantajosa. Imaginemos que estamos no nó número 1000 e queríamos imprimir o conteúdo do nó 999, com as listas simplesmente ligadas teríamos de voltar à cabeça da lista e percorrer os 999 nós até chegarmos ao pretendido, com as listas duplamente ligadas basta andar uma posição para trás.
O que muda na estrutura de cada nó relativamente às simplesmente ligadas, como já foi referido, é apenas a adição de um novo apontador, o qual irá apontar para o elemento da posição imediatamente anterior da lista.
Já que estamos a falar de apontadores convém alertar para uma situação muito específica desta estrutura de dados. Vamos focar-nos na primeira posição da lista. Se todas as posições têm um apontador para os elementos anterior e posterior, como será que definimos o apontador para elemento anterior ao da cabeça?
[...]