-
-
Notifications
You must be signed in to change notification settings - Fork 0
Listas duplamente vinculadas
Uma lista encadeada ou lista ligada é uma estrutura de dados linear e dinâmica. Ela é composta por vários elementos que estão interligados através de ponteiros, ou seja, cada elemento da lista possui um ponteiro que aponta para o endereço de memória da próxima célula. Desse modo, os elementos da lista não precisam estar em posições contíguas da memória. Isso faz com que a estrutura se torne dinâmica, pois a qualquer momento, é possível incluir uma novo elemento na lista, bastando ajustar os ponteiros das células já existentes, de modo que a nova célula seja inserida na estrutura com êxito, na posição desejada pelo programador.
Você pode declarar listas usando a seguinte sintaxe:
A Bíblia é uma lista com uns versos. Um verso é uma lista com uma string.
O compilador irá, internamente, converter as declarações acima, no código abaixo:
Um verso é um ponteiro para uma estrutura de versos. Uma estrutura de versos é uma estrutura com Um próximo verso, Um verso anterior e Uma string. Uns versos são uma lista com Um primeiro verso e Um último verso.
Na Biblioteca padrão existem rotinas diversas para trabalhar com listas.
Exemplos:
ACRESCENTE uma lista para umas listas. ACRESCENTE umas listas para umas outras listas. INSIRA uma lista em umas listas APÓS uma outra lista. INSIRA umas listas em umas outras listas APÓS uma lista. INSIRA uma lista em umas listas ANTES DE uma outra lista. INSIRA umas listas em umas outras listas ANTES DE uma lista. MOVA uma lista de umas listas para outras listas. MOVA umas listas para umas outras listas. ANTEPONHA uma lista para umas listas. ANTEPONHA umas listas para umas outras listas. REVERTA umas listas. REMOVA uma lista desde umas listas.
Exemplo de utilização:
Acrescente o verso para os versos.
Insira o verso após os outros versos.
Remova o verso desde os versos.
A Biblioteca padrão também aceita o comando
"Atribua a quantidade de elementos de uma lista para uma contagem."
As listas são alocadas dinamicamente então é necessário efetuar a alocação e desalocação de memória das listas manualmente, de forma explícita.
Exemplos de alocação:
Crie a Bíblia.
Aloque memória para a Bíblia.
Exemplos de desalocação:
Destrua a Bíblia.
Desaloque a Bíblia.
Perceba que ao destruir uma lista, todos os seus elementos são destruídos juntamente com ela.
Para evitar este comportamento, utilize a palavra-chave "(referência)" após o nome do elemento.
Exemplos:
Um campo de estrutura é uma estrutura com Um sinalizador de redirecionamento, Um campo (referência), Uma rotina de função (referência), Um sinalizador de empilhamento. Uma unidade semântica é uma lista com Uma string, Um tipo (referência), Uma variável (referência), Um tipo atual (referência), Um subtexto atual.