Definição
Implementação
Exercı́cio
Linguagem C: Listas Encadeadas
Prof. Paulo R. S. L. Coelho
paulo@facom.ufu.br
Faculdade de Computação
Universidade Federal de Uberlândia
GEQ007
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Organização
1 Definição
Introdução
Vantagens e Desvantagens
2 Implementação
Listas encadeadas em C
Operações sobre listas
3 Exercı́cio
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Introdução
Vantagens e Desvantagens
Organização
1 Definição
Introdução
Vantagens e Desvantagens
2 Implementação
Listas encadeadas em C
Operações sobre listas
3 Exercı́cio
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Introdução
Vantagens e Desvantagens
Introdução
Uma lista encadeada (ou lista ligada) é uma representação
de uma sequência de objetos na memória do computador.
Cada elemento é armazenada em uma célula ou nó da
lista.
De maneira simplificada, um nó é composto de duas
partes:
a informação (ou o dado) de interesse; e
uma referência para o próximo nó.
Dado Dado
Prox. Prox. NULL
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Introdução
Vantagens e Desvantagens
Vantagens e Desvantagens
O principal benefı́cio de uma lista encadeadas em relação
a vetores é o fato de que os elementos de uma lista
podem ser facilmente inseridos ou removidos.
E isso pode ser feito sem necessidade de realocação ou
reorganização de toda a estrutura, uma vez que os nós
não precisam ser armazenados em sequência na
memória.
Outro ponto importante é a facilidade de inserção e
remoção de nós em qualquer ponto da lista, tomados os
devidos cuidados nas atualizações das referências.
Por outro lado, listas encadeadas por si só não permite
acesso direto a um dado, ou qualquer forma eficiente de
indexação. Assim, muitas operações básicas, como buscar
um nó com uma determinada informação, podem significar
percorrer a maioria ou todos os elementos da lista.
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Listas encadeadas em C
Operações sobre listas
Organização
1 Definição
Introdução
Vantagens e Desvantagens
2 Implementação
Listas encadeadas em C
Operações sobre listas
3 Exercı́cio
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Listas encadeadas em C
Operações sobre listas
Listas Encadeadas em C I
Listas encadeadas são representadas em C utilizando-se
estruturas (struct).
A estrutura de cada célula de uma lista ligada pode ser
definida da seguinte maneira:
struct cel {
int dado;
struct cel *prox;
};
Uma outra maneira de representar, utilizando typedef,
seria:
typedef struct cel celula;
struct cel {
int dado;
celula *prox;
};
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Listas encadeadas em C
Operações sobre listas
Listas Encadeadas em C II
Uma célula c e um ponteiro p para uma célula podem ser
declarados assim:
celula c;
celula *p;
Se c é uma célula, então c.dado é o conteúdo da célula e
c.prox é o endereço da próxima célula.
Se p é o endereço de uma célula, então p->dado é o
conteúdo da célula e p->prox é o endereço da próxima
célula.
Se p é o endereço da última célula da lista, então
p->prox vale NULL.
O endereço de uma lista encadeada é o endereço de sua
primeira célula. Se p é o endereço de uma lista, pode-se
dizer simplesmente ”p é uma lista”.
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Listas encadeadas em C
Operações sobre listas
Inserção
Todas as operações serão apresentadas considerando-se
que a lista possui um nó inicial, cujo valor não se tem
interesse, denominado ”cabeça”da lista. Esse nó tem
apenas a função de apontar para o primeiro elemento
inserido na lista.
A função a seguir deve inserir uma nova célula com
conteúdo x após a posição apontada por p (p não pode
ser nulo).
void insere (int x, celula *p)
{
celula *nova;
nova = (celula *) malloc (sizeof(celula));
nova->dado = x;
nova->prox = p->prox;
p-> = nova;
}
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Listas encadeadas em C
Operações sobre listas
Impressão
A função seguinte imprime uma lista a partir da posição
apontada por ini->prox.
void imprime(celula *ini)
{
celula *p;
for (p = ini->prox; p != NULL; p = p->prox) {
printf ("%dt", p->dado);
}
printf ("n");
}
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Organização
1 Definição
Introdução
Vantagens e Desvantagens
2 Implementação
Listas encadeadas em C
Operações sobre listas
3 Exercı́cio
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Definição
Implementação
Exercı́cio
Exercı́cio I
1 Implemente um programa em C que utiliza a estrutura
apresentada para implementar uma lista. O programa
deve mostrar ao usuário duas opções. Se o usuário
escolher 1, a lista deve ser impressa; se escolher 2, ele
deve entrar com o valor do conteúdo do novo elemento da
lista.
Prof. Paulo Coelho Linguagem C: Listas Encadeadas
Resposta I
#include<stdio.h>
#include<stdlib.h>
typedef struct cel celula;
struct cel {
int dado;
celula *prox;
};
void insere (int x, celula *p)
{
celula *nova;
nova = (celula *) malloc (sizeof(celula));
nova->dado = x;
nova->prox = p->prox;
p->prox = nova;
}
void imprime(celula *ini)
{
celula *p;
printf("nValores na lista:n");
Resposta II
for (p = ini->prox; p != NULL; p = p->prox) {
printf ("%dt", p->dado);
}
printf ("n");
}
int main() {
int op = -1, valor;
celula *lista = NULL;
lista = (celula *) malloc(sizeof(celula));
while (op != 0) {
printf("nOpções disponı́veis:n");
printf("t1 p/ imprimir lista.n");
printf("t2 p/ inserir novo elemento na lista.n");
printf("t0 p/ encerrar.n");
printf("Entre opção desejada: ");
scanf("%d", &op);
switch(op) {
case 0:
printf("nnTCHAU!n");
break;
case 1:
Resposta III
imprime(lista);
break;
case 2:
printf("nEntre valor a ser inserido na lista: ");
scanf("%d", &valor);
insere(valor, lista);
break;
default:
printf("nnOPCAO INVALIDA!n");
}
}
return 0;
}

Mais conteúdo relacionado

PDF
Usar explicação 0
PDF
Usar explicação 01
PPTX
Estrutura de dados em Java - Filas
PDF
Lista encadeada de inteiros
PPTX
PDF
Pilha e Fila Dinamica
PPTX
Explicando Estruturas/Registros no C#
Usar explicação 0
Usar explicação 01
Estrutura de dados em Java - Filas
Lista encadeada de inteiros
Pilha e Fila Dinamica
Explicando Estruturas/Registros no C#

Mais procurados (19)

PDF
Estrutura de Dados - Listas Encadeadas
PDF
Estrutura de dados - Implementação de filas com listas
PPTX
Estrutura de dados em Java - Filas
PPTX
Estrutura de dados em Java - Filas com lista encadeada
PPT
Estruturas de Dados em C#
PDF
Estrutura de dados - Filas
PPT
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
PPTX
Algoritmos e Estrutura de Dados - Aula 05
PPTX
Estrutura de Dados - Aula 03
PPTX
Estrutura de Dados - Aula 04
PDF
Listas em Prolog
PDF
Lista de inteiros
PPTX
Structs em C
PPTX
Algoritmos e Estrutura de Dados - Aula 03
PDF
Lpiii dp-apostila
PDF
Linguagem Prolog - Antonio Rufino
PDF
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
PDF
Estrutura de dados - Pilhas
Estrutura de Dados - Listas Encadeadas
Estrutura de dados - Implementação de filas com listas
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas com lista encadeada
Estruturas de Dados em C#
Estrutura de dados - Filas
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
Algoritmos e Estrutura de Dados - Aula 05
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 04
Listas em Prolog
Lista de inteiros
Structs em C
Algoritmos e Estrutura de Dados - Aula 03
Lpiii dp-apostila
Linguagem Prolog - Antonio Rufino
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Estrutura de dados - Pilhas
Anúncio

Semelhante a Usar explicação (20)

PDF
Aula 1 | Introdução a C++
PDF
Apostila estrutura de dados 2
PDF
Estrutura de dados
PDF
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
PPTX
Beljug2010
PDF
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
PDF
Estrutura de Dados - Aula de revisão de c na prática
PDF
Aula03
PDF
Aula 03 - Classes em C++ ( Parte 2 )
PDF
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
PDF
Apostila de Introdução a POO com C#
PDF
Banco de Dados (parte 02)
PPT
Fundamentos de SQL - Parte 3 de 8
KEY
Python 02
PDF
PDF
Semanaupecaruaru2013 c++para iniciantes
PDF
Simulador Funcional
PPT
Aula Prolog 09 - Listas
PDF
Programação funcional
Aula 1 | Introdução a C++
Apostila estrutura de dados 2
Estrutura de dados
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Beljug2010
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de Dados - Aula de revisão de c na prática
Aula03
Aula 03 - Classes em C++ ( Parte 2 )
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Apostila de Introdução a POO com C#
Banco de Dados (parte 02)
Fundamentos de SQL - Parte 3 de 8
Python 02
Semanaupecaruaru2013 c++para iniciantes
Simulador Funcional
Aula Prolog 09 - Listas
Programação funcional
Anúncio

Mais de Ademar Trindade (20)

PPTX
AULA_CONCEITOS_APLIUCAÇÃO_INDICES_PARTE_2.pptx
PDF
AULA_INDICES_BANCO_DE_DADOS_RELACIONAIS_PARTE_2.pdf
PDF
AULA_INDICES_BANCO_DE_DADOS_RELACIONAISPARTE_1.pdf
PDF
texto_explicativo com o mapa mental para a disciplina de AOC
PDF
texto_explicativo com o mapa mental para a disciplina de AOC
PDF
507579230-9-1-Capitulo-3-Kotlin-Intermediario.pdf
PDF
507579287-10-1-Capitulo-2-Kotlin-e-Orientacao-a-Objetos.pdf
PPT
pesquisa-mercadolc3b3gica-aula-2-2017.ppt
PPT
pesquisacientifica.ppt
PPT
aula-091.ppt
PPT
va_Arte_Pesquisar_II_Estratégia_busca_fontes_informação_2019.ppt
PPTX
AULA_ORIENTATIVO_TCC.pptx
PPTX
AULA_INTRODUÇÃO_PARTE_1.pptx
PPTX
AULA_INTRODUÇÃO_PARTE_0.pptx
PDF
TCC Tiago Barreto de Lima.pdf
PDF
Simulando infraestruturas-computacionais-para-a-ubicomp
PDF
Isa madapt tese
PDF
Internet das-coisas
PDF
Artigo ihc1
PDF
63924715 xxi-simposio-brasileiro-de-redes-de-computadores
AULA_CONCEITOS_APLIUCAÇÃO_INDICES_PARTE_2.pptx
AULA_INDICES_BANCO_DE_DADOS_RELACIONAIS_PARTE_2.pdf
AULA_INDICES_BANCO_DE_DADOS_RELACIONAISPARTE_1.pdf
texto_explicativo com o mapa mental para a disciplina de AOC
texto_explicativo com o mapa mental para a disciplina de AOC
507579230-9-1-Capitulo-3-Kotlin-Intermediario.pdf
507579287-10-1-Capitulo-2-Kotlin-e-Orientacao-a-Objetos.pdf
pesquisa-mercadolc3b3gica-aula-2-2017.ppt
pesquisacientifica.ppt
aula-091.ppt
va_Arte_Pesquisar_II_Estratégia_busca_fontes_informação_2019.ppt
AULA_ORIENTATIVO_TCC.pptx
AULA_INTRODUÇÃO_PARTE_1.pptx
AULA_INTRODUÇÃO_PARTE_0.pptx
TCC Tiago Barreto de Lima.pdf
Simulando infraestruturas-computacionais-para-a-ubicomp
Isa madapt tese
Internet das-coisas
Artigo ihc1
63924715 xxi-simposio-brasileiro-de-redes-de-computadores

Último (10)

PPTX
organizaoefuncionamentodeunidadedeenfermagem-240414190344-a21272a1 (1).pptx
PPTX
slide preparativo para lingua portuguesa
PPTX
Vida de Sao José Maria Tomasi, Teatino e Cardeal
PPTX
SLIDE 1 PARTE 1 Fund da Informatica .pptx
PPTX
SLIDE 1 PARTE 2 Fund da Informatica .pptx
PPTX
redes de computadores e internet - kurose.pptx
DOCX
Cópia de ACOMPANHAMENTO PARA A RECOMPOSIÇÃO DA APRENDIZAGEM 8 ano História.docx
PDF
Pinealle - Aceleradora de Negócios em Canais Digitais
PPTX
Questionario-Fundamentos-de-Informatica-e-Design.pptx
PPTX
cap1-Kurose (1)- redes de computadores.pptx
organizaoefuncionamentodeunidadedeenfermagem-240414190344-a21272a1 (1).pptx
slide preparativo para lingua portuguesa
Vida de Sao José Maria Tomasi, Teatino e Cardeal
SLIDE 1 PARTE 1 Fund da Informatica .pptx
SLIDE 1 PARTE 2 Fund da Informatica .pptx
redes de computadores e internet - kurose.pptx
Cópia de ACOMPANHAMENTO PARA A RECOMPOSIÇÃO DA APRENDIZAGEM 8 ano História.docx
Pinealle - Aceleradora de Negócios em Canais Digitais
Questionario-Fundamentos-de-Informatica-e-Design.pptx
cap1-Kurose (1)- redes de computadores.pptx

Usar explicação

  • 1. Definição Implementação Exercı́cio Linguagem C: Listas Encadeadas Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 2. Definição Implementação Exercı́cio Organização 1 Definição Introdução Vantagens e Desvantagens 2 Implementação Listas encadeadas em C Operações sobre listas 3 Exercı́cio Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 3. Definição Implementação Exercı́cio Introdução Vantagens e Desvantagens Organização 1 Definição Introdução Vantagens e Desvantagens 2 Implementação Listas encadeadas em C Operações sobre listas 3 Exercı́cio Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 4. Definição Implementação Exercı́cio Introdução Vantagens e Desvantagens Introdução Uma lista encadeada (ou lista ligada) é uma representação de uma sequência de objetos na memória do computador. Cada elemento é armazenada em uma célula ou nó da lista. De maneira simplificada, um nó é composto de duas partes: a informação (ou o dado) de interesse; e uma referência para o próximo nó. Dado Dado Prox. Prox. NULL Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 5. Definição Implementação Exercı́cio Introdução Vantagens e Desvantagens Vantagens e Desvantagens O principal benefı́cio de uma lista encadeadas em relação a vetores é o fato de que os elementos de uma lista podem ser facilmente inseridos ou removidos. E isso pode ser feito sem necessidade de realocação ou reorganização de toda a estrutura, uma vez que os nós não precisam ser armazenados em sequência na memória. Outro ponto importante é a facilidade de inserção e remoção de nós em qualquer ponto da lista, tomados os devidos cuidados nas atualizações das referências. Por outro lado, listas encadeadas por si só não permite acesso direto a um dado, ou qualquer forma eficiente de indexação. Assim, muitas operações básicas, como buscar um nó com uma determinada informação, podem significar percorrer a maioria ou todos os elementos da lista. Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 6. Definição Implementação Exercı́cio Listas encadeadas em C Operações sobre listas Organização 1 Definição Introdução Vantagens e Desvantagens 2 Implementação Listas encadeadas em C Operações sobre listas 3 Exercı́cio Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 7. Definição Implementação Exercı́cio Listas encadeadas em C Operações sobre listas Listas Encadeadas em C I Listas encadeadas são representadas em C utilizando-se estruturas (struct). A estrutura de cada célula de uma lista ligada pode ser definida da seguinte maneira: struct cel { int dado; struct cel *prox; }; Uma outra maneira de representar, utilizando typedef, seria: typedef struct cel celula; struct cel { int dado; celula *prox; }; Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 8. Definição Implementação Exercı́cio Listas encadeadas em C Operações sobre listas Listas Encadeadas em C II Uma célula c e um ponteiro p para uma célula podem ser declarados assim: celula c; celula *p; Se c é uma célula, então c.dado é o conteúdo da célula e c.prox é o endereço da próxima célula. Se p é o endereço de uma célula, então p->dado é o conteúdo da célula e p->prox é o endereço da próxima célula. Se p é o endereço da última célula da lista, então p->prox vale NULL. O endereço de uma lista encadeada é o endereço de sua primeira célula. Se p é o endereço de uma lista, pode-se dizer simplesmente ”p é uma lista”. Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 9. Definição Implementação Exercı́cio Listas encadeadas em C Operações sobre listas Inserção Todas as operações serão apresentadas considerando-se que a lista possui um nó inicial, cujo valor não se tem interesse, denominado ”cabeça”da lista. Esse nó tem apenas a função de apontar para o primeiro elemento inserido na lista. A função a seguir deve inserir uma nova célula com conteúdo x após a posição apontada por p (p não pode ser nulo). void insere (int x, celula *p) { celula *nova; nova = (celula *) malloc (sizeof(celula)); nova->dado = x; nova->prox = p->prox; p-> = nova; } Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 10. Definição Implementação Exercı́cio Listas encadeadas em C Operações sobre listas Impressão A função seguinte imprime uma lista a partir da posição apontada por ini->prox. void imprime(celula *ini) { celula *p; for (p = ini->prox; p != NULL; p = p->prox) { printf ("%dt", p->dado); } printf ("n"); } Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 11. Definição Implementação Exercı́cio Organização 1 Definição Introdução Vantagens e Desvantagens 2 Implementação Listas encadeadas em C Operações sobre listas 3 Exercı́cio Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 12. Definição Implementação Exercı́cio Exercı́cio I 1 Implemente um programa em C que utiliza a estrutura apresentada para implementar uma lista. O programa deve mostrar ao usuário duas opções. Se o usuário escolher 1, a lista deve ser impressa; se escolher 2, ele deve entrar com o valor do conteúdo do novo elemento da lista. Prof. Paulo Coelho Linguagem C: Listas Encadeadas
  • 13. Resposta I #include<stdio.h> #include<stdlib.h> typedef struct cel celula; struct cel { int dado; celula *prox; }; void insere (int x, celula *p) { celula *nova; nova = (celula *) malloc (sizeof(celula)); nova->dado = x; nova->prox = p->prox; p->prox = nova; } void imprime(celula *ini) { celula *p; printf("nValores na lista:n");
  • 14. Resposta II for (p = ini->prox; p != NULL; p = p->prox) { printf ("%dt", p->dado); } printf ("n"); } int main() { int op = -1, valor; celula *lista = NULL; lista = (celula *) malloc(sizeof(celula)); while (op != 0) { printf("nOpções disponı́veis:n"); printf("t1 p/ imprimir lista.n"); printf("t2 p/ inserir novo elemento na lista.n"); printf("t0 p/ encerrar.n"); printf("Entre opção desejada: "); scanf("%d", &op); switch(op) { case 0: printf("nnTCHAU!n"); break; case 1:
  • 15. Resposta III imprime(lista); break; case 2: printf("nEntre valor a ser inserido na lista: "); scanf("%d", &valor); insere(valor, lista); break; default: printf("nnOPCAO INVALIDA!n"); } } return 0; }