LISTAS ENCADEADAS
PROFA. SIMONE BELLO KAMINSKI AIRES
SUMÁRIO
• Revisão
• Acessar valor de variável pelo endereço de memória
• Modificar valor usando o endereço de memória
• Ponteiros e Funções
• Vetores x Listas
• Listas simplesmente encadeada
• Listas duplamente encadeadas
REVISÃO
VARIÁVEL
“QUANTOS BITS SÃO PRECISOS PARA ARMAZENAR
UMA VARIÁVEL EM PYTHON”
Tipo Tamanho em bytes Precisão / Representatividade
int 28 + (4 * número de dígitos) Representa inteiros de precisão ilimitada
float 24 ou 32 (dependendo do SO) IEEE 754, precisão dupla (~15-17
dígitos)
complex 48 2 floats (real e imaginário)
bool 28 Apenas dois valores (True, False)
str 49 + (número de caracteres * 1 byte) Unicode, cada caractere ocupa pelo
menos 1 byte
TESTANDO OS TAMANHOS NO PYTHON
PONTEIROS EM PYTHON – CONCEITOS
BÁSICOS
Em linguagens como C e C++, podemos criar ponteiros explicitamente e
manipular diretamente os endereços de memória.
Python não permite manipulação direta de ponteiros, mas podemos
acessar endereços de memória e entender como referências funcionam.
A função id() retorna o endereço de memória de uma variável.
FUNÇÃO ID()
TIPOS MUTÁVEIS E IMUTÁVEIS - PYTHON
TIPOS IMUTÁVEIS
TIPOS MUTÁVEIS
ACESSAR E MODIFICAR VALOR DE VARIÁVEL PELO
ENDEREÇO DE MEMÓRIA
ACESSAR E MODIFICAR VALOR DE VARIÁVEL PELO
PONTEIRO
• Biblioteca ctypes
• import ctypes
• Acessar e alterar o valor de uma variável na memória.
EXEMPLO 1 – ACESSAR VALOR DE VARIÁVEL
• Para modificar um valor armazenado em um ponteiro usando ctypes, você precisa
garantir que está trabalhando com um objeto mutável.
• Como os inteiros (int) são imutáveis em Python, precisamos criar um objeto
ctypes.c_int, que representa um inteiro armazenado na memória e pode ser
modificado diretamente.
EXEMPLO 1 – ACESSAR VALOR DE VARIÁVEL
EXEMPLO 2 – MODIFICAR VALOR DE VARIÁVEL
• Continuando do exemplo 1....
ATENÇÃO – IMPORTANTE
• Se você realmente precisa manipular memória de forma direta e segura, use
C ou C++ em vez de Python.
• Esse método é arriscado e pode causar falhas imprevisíveis, pois id() não
garante um acesso válido à memória real do objeto.
• Esse método não funciona com variáveis int normais do Python (pois são
imutáveis). Você precisa de um objeto ctypes.c_int para que a manipulação
direta na memória seja segura.Se tentar usar id(a),, o Python pode mover ou
desalocar o objeto, resultando em comportamento imprevisível ou crash do
interpretador.
VETORES X LISTAS
VETORES X LISTAS
• Vetores são uma estrutura fundamental de armazenamento de dados,
amplamente utilizada em diversas linguagens de programação, como C e
Java.
• No entanto, em Python, não há um tipo de dado chamado "vetor" nativo. Em
vez disso, usamos listas (list), que são estruturas mais flexíveis.
VETORES
• Um vetor é uma estrutura de dados homogênea, onde:
• Os elementos ocupam posições contíguas na memória.
• Todos os elementos possuem o mesmo tipo de dado.
• O acesso aos elementos é feito por índices fixos.
• O tamanho do vetor geralmente é fixo e definido na alocação.
VETORES
• Um vetor é uma estrutura de dados homogênea, onde:
• Os elementos ocupam posições contíguas na memória.
• Todos os elementos possuem o mesmo tipo de dado.
• O acesso aos elementos é feito por índices fixos.
• O tamanho do vetor geralmente é fixo e definido na alocação.
Exemplo em Linguagem C
Vetor de tamanho 5
VETORES
• Um vetor é uma estrutura de dados homogênea, onde:
• Os elementos ocupam posições contíguas na memória.
• Todos os elementos possuem o mesmo tipo de dado.
• O acesso aos elementos é feito por índices fixos.
• O tamanho do vetor geralmente é fixo e definido na alocação.
Exemplo em Linguagem C
Vetor de tamanho 5
LISTAS - PYTHON
• Em Python, utilizamos listas (list) em vez de vetores. As listas são
estruturas dinâmicas e heterogêneas, o que significa que:
• Podem armazenar diferentes tipos de dados (int, float, str, etc.).
• Possuem tamanho dinâmico, podendo crescer ou diminuir conforme
necessário.
• O acesso também é feito por índices.
• Internamente, são implementadas como arrays dinâmicos.
LISTAS - PYTHON
LISTAS
VETORES X LISTAS
VETORES X LISTAS
Linguagem C / Java
0 1 2 3 4 Estático
Python
0 1 2 3 4 Dinâmico
VETORES X LISTAS
Linguagem C / Java
0 1 2 3 4 Estático
Python
0 1 2 3 4 Dinâmico
0 1 2 3 4 5
VETORES X LISTAS
Linguagem C / Java
0 1 2 3 4 Estático
Python
0 1 2 3 4 Dinâmico
0 1 2 3 4 5
0 1 2 3 4 5 6
A PERGUNTA QUE NÃO QUER CALAR...
• Se a linguagem Python deriva da Linguagem C, como pode a Linguagem C
não implementar vetores dinamicamente?
A PERGUNTA QUE NÃO QUER CALAR...
• Se a linguagem Python deriva da Linguagem C, como pode a Linguagem C
não implementar vetores dinamicamente?
• Resposta:
• A Linguagem C implementa vetores dinamicamente, sim!! Porém, não de
forma automática como a Linguagem Python.
A PERGUNTA QUE NÃO QUER CALAR...
• Se a linguagem Python deriva da Linguagem C, como pode a Linguagem C
não implementar vetores dinamicamente?
• Resposta:
• A Linguagem C implementa vetores dinamicamente, sim!! Porém, não de
forma automática como a Linguagem Python.
• Quando digo de forma automática, estou dizendo que o compilador
Python é responsável por essa tarefa. Na Linguagem C o programador é
responsável por essa tarefa.
A PERGUNTA QUE NÃO QUER CALAR...
• Se a linguagem Python deriva da Linguagem C, como pode a Linguagem C
não implementar vetores dinamicamente?
• Resposta:
• A Linguagem C implementa vetores dinamicamente, sim!! Porém, não de
forma automática como a Linguagem Python.
• Quando digo de forma automática, estou dizendo que o compilador
Python é responsável por essa tarefa. Na Linguagem C o programador é
responsável por essa tarefa.
• Em Linguagem C, as informações guardadas no vetor DEVEM ser do mesmo
tipo, em Phyton não.
VETORES E LISTAS
• Ocupam espaços CONTÍGUOS na memória.
• Todos os elementos estão alocados lado a lado! Independente seja C ou Python.
VETORES E LISTAS
• Ocupam espaços CONTÍGUOS na memória.
• Todos os elementos estão alocados lado a lado! Independente seja C ou Python.
Criando listas em
Python
VETORES E LISTAS
• Ocupam espaços CONTÍGUOS na memória.
• Todos os elementos estão alocados lado a lado! Independente seja C ou Python.
Criando listas em
Python
Mapa
de
Memória
VETORES E LISTAS
• Ocupam espaços CONTÍGUOS na memória.
• Todos os elementos estão alocados lado a lado! Independente seja C ou Python.
Criando listas em
Python
Mapa
de
Memória
VETORES E LISTAS
• Ocupam espaços CONTÍGUOS na memória.
• Todos os elementos estão alocados lado a lado! Independente seja C ou Python.
Criando listas em
Python
Mapa
de
Memória
LISTAS ENCADEADAS
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS
• Em muitos cenários de programação, precisamos armazenar e
manipular grandes volumes de dados de maneira eficiente.
• Banco de dados da Amazon, Caixa Econômica, entre outros....
• Embora o Python tenha uma estrutura embutida chamada list, que
gerencia automaticamente o tamanho da coleção, entender listas
encadeadas é essencial para compreender como estruturas de
dados funcionam internamente e como otimizá-las para situações
específicas
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
POR QUE USAR LISTAS ENCADEADAS?
• Alocação dinâmica: Não é necessário definir um tamanho fixo no
início.
• Facilidade de inserção e remoção: Operações no meio da lista são
mais eficientes que em listas baseadas em arrays.
• Otimização de memória: Ao contrário dos arrays tradicionais, não
há alocação excessiva de memória.
• Estruturas avançadas: São a base para outras estruturas como
pilhas, filas e grafos.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
POR QUE USAR LISTAS ENCADEADAS?
• Por outro lado, listas encadeadas possuem algumas desvantagens,
como:
• Maior uso de memória (devido aos ponteiros armazenados
junto com os dados).
• Acesso menos eficiente a elementos específicos (O(n) em busca
de um índice específico).
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
POR QUE USAR LISTAS ENCADEADAS?
• Conseguir alocar TODOS os elementos na memória. Porém, de
forma NÃO contígua. Ou seja, não lado a lado...
• Como fazer isso e saber qual elemento está depois do outro
elemento.....
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
POR QUE USAR LISTAS ENCADEADAS?
• Conseguir alocar TODOS os elementos na memória. Porém, de
forma NÃO contígua. Ou seja, não lado a lado...
• Como fazer isso e saber qual elemento está depois do outro
elemento.....
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
POR QUE USAR LISTAS ENCADEADAS?
8 5 3 2 9
7 8
3 2
1 9 6 1 8 6 2 5 7 4
4 2
4 4 2 0 2 7
5 3 2 9 7 1 0
3 7 5 3
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
POR QUE USAR LISTAS ENCADEADAS?
8 5 3 2 9
7 8
3 2
1 9 6 1 8 6 2 5 7 4
4 2
4 4 2 0 2 7
5 3 2 9 7 1 0
1 3 7 5 3
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
POR QUE USAR LISTAS ENCADEADAS?
• Conseguimos distribuir os elementos na memória, de forma NÃO
contígua.
• Precisamos saber quem vem depois de quem... Ou seja, que é o
próximo.
• Para que consigamos fazer isso, precisamos de uma estrutura que
armazene o valor/string e um ponteiro que guarde o endereço de
memória de quem vem depois.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS
• Chamamos de NÓ ou NODO uma estrutura de dados que armazena
um valor e um ponteiro para o próximo nó.
• Cria um NÓ, usando conhecimento de dicionários.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS
• Chamamos de NÓ ou NODO uma estrutura de dados que armazena
um valor e um ponteiro para o próximo nó.
• Cria um NÓ, somente UM NÓ, usando conhecimento de dicionários.
NO
informacao
prox
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS
• Precisamos conectar um nó ao outro.... Para darmos sequencia em
nossa lista encadeada.
NO1 NO2 NO3
informacao informacao informacao
prox prox prox
NULL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS
• Precisamos conectar um nó ao outro.... Para darmos sequencia em
nossa lista encadeada.
NO1 NO2 NO3
informacao informacao informacao
prox prox prox
NULL
O NO que não olha para outro NO
aponta para NULL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó na lista.
• Inicialmente a lista está vazia.
• NULL seria correspondente a “nada”/”vazio”/”zero”
lista
NULL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó no início da lista.
lista novo Precisamos conectar
o nó na lista.
Em outras palavras,
NULL
informacao inserir o novo nó na
prox lista encadeada.
NULL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó no início da lista.
lista E se tiver um novo nó?
Onde devemos
conectar?
informacao No início ou no final?
prox
NULL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Analisando: E se tiver um novo nó? Onde devemos conectar? No início
ou no final?
lista
NULL
No início não precisamos percorrer todos os elementos da lista,
isto torna a inserção mais rápida!
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó no início da lista.
lista novo
informacao informacao
prox prox
NULL NULL
O 1º elemento passará a ser o segundo elemento da lista!
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó no início da lista.
lista novo
informacao informacao
prox prox
NULL NULL
novo_no[“prox"] irá apontar para o 1º elemento
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó no início da lista.
lista novo
informacao informacao
prox prox
NULL
novo_no[“prox"] irá apontar para o 1º elemento
novo_no[“prox”] = lista
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó no início da lista.
lista novo
informacao informacao
prox prox
NULL
lista = novo_no
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó no início da lista.
lista
informacao informacao
prox prox
NULL
lista = novo_no
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Funções criar_novo e inserir_no_inicio
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - IMPRIMIR
• Função imprimir_lista
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - TESTE
• Testando..... Vamos ampliar a lista inserindo mais elementos.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Testando..... Vamos ampliar a lista inserindo mais elementos.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - REMOÇÃO POR VALOR
• Para remover um NÓ na lista através do valor armazenado no NÓ.
lista
3 5 12 1 55 9
NULL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - REMOÇÃO POR VALOR
• Para remover um NÓ na lista através do valor armazenado no NÓ.
lista
3 5 12 1 55 9
NULL
Removendo o NÓ com valor 12.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - REMOÇÃO POR VALOR
• Para remover um NÓ na lista através do valor armazenado no NÓ.
lista
3 5 12 1 55 9
NULL
Removendo o NÓ com valor 12.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - REMOÇÃO POR VALOR
• Função remover_no
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERE NO FINAL
• Para inserir no final da lista um NÓ, precisamos percorrer TODA a
lista até o último elemento.
lista
3 5 12 1 55 9
NULL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERE NO FINAL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - TESTES....
LISTAS DUPLAMENTE ENCADEADAS
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS
• Cada nó da lista terá um ponteiro para o seu próximo e para o seu
anterior.
lista
NULL
Para todas as inserções e remoções precisamos SEMPRE atualizar
os 2 ponteiros (anterior e próximo)
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS
• Estrutura do NÓ contém 2 ponteiros.
• Cria um NÓ, usando conhecimento de dicionários.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - INSERÇÃO
NO INÍCIO
• Conectar os nó no início da lista.
lista
informacao
NULL prox NULL
ant
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - INSERÇÃO
NO INÍCIO
• Conectar os nó no início da lista.
lista novo
informacao informacao
NULL prox NULL prox NULL
ant ant
NULL
O 1º elemento passará a ser o segundo elemento da lista!
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - INSERÇÃO
NO INÍCIO
• Conectar os nó no início da lista.
lista novo
informacao informacao
prox prox
ant ant NULL
NULL
novo_no[“prox"] irá apontar para o 1º elemento
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó no início da lista.
lista novo
informacao informacao
prox prox
ant ant NULL
NULL
novo_no[“prox"] irá apontar para o 1º elemento
novo_no[“prox”] = lista
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó no início da lista.
lista novo
informacao informacao
prox prox
ant ant NULL
NULL
novo_no[“prox”] = lista
lista[“ant”] = novo
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - INSERÇÃO NO INÍCIO
• Conectar os nó no início da lista.
lista novo
informacao informacao
prox prox
ant ant NULL
NULL
novo_no[“prox”] = lista
lista[“ant”] = novo
lista = novo
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - INSERÇÃO
NO INÍCIO
• Funções criar_novo e inserir_no_inicio
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - IMPRIMIR
• Função imprimir_lista
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - TESTE
• Testando..... Vamos ampliar a lista inserindo mais elementos.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - TESTE
• Testando..... Vamos ampliar a lista inserindo mais elementos.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - REMOÇÃO
• Para remover um NÓ na lista através do valor armazenado no NÓ.
lista
1 8 3 6 80 12 NULL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - REMOÇÃO NO INÍCIO
• Para remover um NÓ na lista através do valor armazenado no NÓ.
lista
1 8 3 6 80 12 NULL
Removendo o NÓ com valor 3.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS ENCADEADAS - REMOÇÃO NO INÍCIO
• Para remover um NÓ na lista através do valor armazenado no NÓ.
lista
1 8 3 6 80 12 NULL
Removendo o NÓ com valor 3.
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - REMOVE
VALOR
• Função
remover_no
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - INSERE NO
FINAL
• Para inserir no final da lista um NÓ, precisamos percorrer TODA a
lista até o último elemento.
lista
1 8 3 6 80 12 NULL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - INSERE NO
FINAL
Embora o Python tenha uma estrutura embutida muito poderosa chamada list, que gerencia automaticamente o tamanho da coleção, entender listas encadead
LISTAS DUPLAMENTE ENCADEADAS - TESTES....
LISTAS COM CABEÇA E LISTAS CIRCULARES
PESQUISAR
DÚVIDAS
LISTA DE EXERCÍCIOS 2
FÓRUM 2
QUESTIONÁRIO 2