Documentação
  • Bem-vindo
  • Biblioteca Padrão
  • Características da linguagem
  • Comentários
  • Declaração e inicialização de variáveis
    • Inferência automática de tipos
  • Tipos de dados
    • Valores numéricos
    • Estruturas e Uniões de dados
      • Acessando os valores dos campos de estruturas
    • Strings e caracteres
      • Subtextos
      • Percorredores
    • Listas duplamente vinculadas
    • Conversão de tipos
  • Laços e Desvios condicionais
    • Lidando com vazamentos de memória em laços
  • Operadores
    • Precedência e Ordem de avaliação de operadores
  • Rotinas, Parâmetros e Funções
  • Trabalhando com Bibliotecas externas
  • Trabalhando com Instruções Hexadecimais
  • Callbacks
  • Introduzindo as palavras-chave "Preserve" e "original"
  • Usando a preposição "de"
  • Cores
  • Gráficos de Tartaruga (Turtle Graphics)
  • Algoritmos de Exemplo
    • Olá Mundo
    • A + B
    • Agenda Telefônica
    • Animação de sprites
    • Fatorial
    • 100 Portas
    • Dó Ré Mi Fá
    • API Win32 - GdipImageRotateFlip
    • Pintando como Claude Monet
    • Exemplo de interface
    • Evitando problemas de cintilação (Flickering)
    • Desenhando e pintando retângulos e caixas
    • Cofrinho Virtual
Fornecido por GitBook
Nesta página

Isto foi útil?

Editar no GitLab
  1. Tipos de dados

Listas duplamente vinculadas

AnteriorPercorredoresPróximoConversão de tipos

Atualizado há 27 dias

Isto foi útil?

Uma lista encadeada ou lista ligada é uma linear e dinâmica. Ela é composta por vários elementos que estão interligados através de , ou seja, cada elemento da lista possui um ponteiro que aponta para o 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:

Uns versos são uma lista com
  Um verso denominado primeiro verso e
  Um verso denominado último verso.
  
Um verso é um ponteiro para uma estrutura de versos.

Uma estrutura de versos é uma estrutura com
  Um verso denominado próximo verso,
  Um verso denominado verso anterior e 
  Uma string.

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 aquantidade de elementosde uma lista para uma contagem."

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.

Exemplo de alocação:

Aloque memória para a Bíblia.

Exemplo de desalocação:

Desaloque memória para a Bíblia.

Perceba que ao destruir uma lista, todos os seus elementos (excluindo ponteiros) são destruídos juntamente com ela.

Para evitar este q, utilize a palavra-chave "(referência)" após o nome do elemento. Isto indicará ao compilador que o campo trata-se de um ponteiro apenas.

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.
estrutura de dados
ponteiros
endereço de memória