SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
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

Mais procurados

Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasEstrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasAdriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#Marcelo Charan
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUACândido Sales Gomes
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05thomasdacosta
 
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03thomasdacosta
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04thomasdacosta
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em PrologNatã Melo
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Linguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio RufinoLinguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio RufinoAntonio Rufino
 
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...Tchelinux
 

Mais procurados (19)

Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Estrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listasEstrutura de dados - Implementação de filas com listas
Estrutura de dados - Implementação de filas com listas
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estruturas de Dados em C#
Estruturas de Dados em C#Estruturas de Dados em C#
Estruturas de Dados em C#
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05
 
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04
 
Listas em Prolog
Listas em PrologListas em Prolog
Listas em Prolog
 
Lista de inteiros
Lista de inteirosLista de inteiros
Lista de inteiros
 
Structs em C
Structs em CStructs em C
Structs em C
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Lpiii dp-apostila
Lpiii dp-apostilaLpiii dp-apostila
Lpiii dp-apostila
 
Linguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio RufinoLinguagem Prolog - Antonio Rufino
Linguagem Prolog - Antonio Rufino
 
String
StringString
String
 
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
Fugindo para as colinas com Python - Julio Biason - Tchelinux Bento Gonçalves...
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 

Semelhante a Listas Encadeadas em C

Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dadosgjpbg
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2Leandro Lopes
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroRogério Moraes de Carvalho
 
Beljug2010
Beljug2010Beljug2010
Beljug2010UFPA
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Estrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na práticaLeinylson Fontinele
 
Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )PeslPinguim
 
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Filipe Chagas Ferraz
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Andre Nascimento
 
Banco de Dados (parte 02)
Banco de Dados (parte 02)Banco de Dados (parte 02)
Banco de Dados (parte 02)Alex Camargo
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Emiliano Barbosa
 
Programação funcional
Programação funcionalProgramação funcional
Programação funcionalNatan Mai
 

Semelhante a Listas Encadeadas em C (20)

Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2
 
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuroVisual Studio Summit 2016: C# 7 - Olhando para o futuro
Visual Studio Summit 2016: C# 7 - Olhando para o futuro
 
Beljug2010
Beljug2010Beljug2010
Beljug2010
 
Top0
Top0Top0
Top0
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
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
Estrutura de Dados - Aula de revisão de c na práticaEstrutura de Dados - Aula de revisão de c na prática
Estrutura de Dados - Aula de revisão de c na prática
 
Aula03
Aula03Aula03
Aula03
 
Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )Aula 03 - Classes em C++ ( Parte 2 )
Aula 03 - Classes em C++ ( Parte 2 )
 
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
 
Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#Apostila de Introdução a POO com C#
Apostila de Introdução a POO com C#
 
Banco de Dados (parte 02)
Banco de Dados (parte 02)Banco de Dados (parte 02)
Banco de Dados (parte 02)
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8
 
Python 02
Python 02Python 02
Python 02
 
Pilhas e filas
Pilhas e filasPilhas e filas
Pilhas e filas
 
Semanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantesSemanaupecaruaru2013 c++para iniciantes
Semanaupecaruaru2013 c++para iniciantes
 
Simulador Funcional
Simulador FuncionalSimulador Funcional
Simulador Funcional
 
Aula Prolog 09 - Listas
Aula Prolog 09 - ListasAula Prolog 09 - Listas
Aula Prolog 09 - Listas
 
Programação funcional
Programação funcionalProgramação funcional
Programação funcional
 

Mais de Ademar Trindade

pesquisa-mercadolc3b3gica-aula-2-2017.ppt
pesquisa-mercadolc3b3gica-aula-2-2017.pptpesquisa-mercadolc3b3gica-aula-2-2017.ppt
pesquisa-mercadolc3b3gica-aula-2-2017.pptAdemar Trindade
 
va_Arte_Pesquisar_II_Estratégia_busca_fontes_informação_2019.ppt
va_Arte_Pesquisar_II_Estratégia_busca_fontes_informação_2019.pptva_Arte_Pesquisar_II_Estratégia_busca_fontes_informação_2019.ppt
va_Arte_Pesquisar_II_Estratégia_busca_fontes_informação_2019.pptAdemar Trindade
 
AULA_ORIENTATIVO_TCC.pptx
AULA_ORIENTATIVO_TCC.pptxAULA_ORIENTATIVO_TCC.pptx
AULA_ORIENTATIVO_TCC.pptxAdemar Trindade
 
AULA_INTRODUÇÃO_PARTE_1.pptx
AULA_INTRODUÇÃO_PARTE_1.pptxAULA_INTRODUÇÃO_PARTE_1.pptx
AULA_INTRODUÇÃO_PARTE_1.pptxAdemar Trindade
 
AULA_INTRODUÇÃO_PARTE_0.pptx
AULA_INTRODUÇÃO_PARTE_0.pptxAULA_INTRODUÇÃO_PARTE_0.pptx
AULA_INTRODUÇÃO_PARTE_0.pptxAdemar Trindade
 
TCC Tiago Barreto de Lima.pdf
TCC Tiago Barreto de Lima.pdfTCC Tiago Barreto de Lima.pdf
TCC Tiago Barreto de Lima.pdfAdemar Trindade
 
Simulando infraestruturas-computacionais-para-a-ubicomp
Simulando infraestruturas-computacionais-para-a-ubicompSimulando infraestruturas-computacionais-para-a-ubicomp
Simulando infraestruturas-computacionais-para-a-ubicompAdemar Trindade
 
63924715 xxi-simposio-brasileiro-de-redes-de-computadores
63924715 xxi-simposio-brasileiro-de-redes-de-computadores63924715 xxi-simposio-brasileiro-de-redes-de-computadores
63924715 xxi-simposio-brasileiro-de-redes-de-computadoresAdemar Trindade
 
2007 alexandre rodriguesgomes
2007 alexandre rodriguesgomes2007 alexandre rodriguesgomes
2007 alexandre rodriguesgomesAdemar Trindade
 
170557670 pesquisa-e-ordenacao
170557670 pesquisa-e-ordenacao170557670 pesquisa-e-ordenacao
170557670 pesquisa-e-ordenacaoAdemar Trindade
 
7082 texto do artigo-33807-2-10-20180903
7082 texto do artigo-33807-2-10-201809037082 texto do artigo-33807-2-10-20180903
7082 texto do artigo-33807-2-10-20180903Ademar Trindade
 

Mais de Ademar Trindade (20)

pesquisa-mercadolc3b3gica-aula-2-2017.ppt
pesquisa-mercadolc3b3gica-aula-2-2017.pptpesquisa-mercadolc3b3gica-aula-2-2017.ppt
pesquisa-mercadolc3b3gica-aula-2-2017.ppt
 
pesquisacientifica.ppt
pesquisacientifica.pptpesquisacientifica.ppt
pesquisacientifica.ppt
 
aula-091.ppt
aula-091.pptaula-091.ppt
aula-091.ppt
 
va_Arte_Pesquisar_II_Estratégia_busca_fontes_informação_2019.ppt
va_Arte_Pesquisar_II_Estratégia_busca_fontes_informação_2019.pptva_Arte_Pesquisar_II_Estratégia_busca_fontes_informação_2019.ppt
va_Arte_Pesquisar_II_Estratégia_busca_fontes_informação_2019.ppt
 
AULA_ORIENTATIVO_TCC.pptx
AULA_ORIENTATIVO_TCC.pptxAULA_ORIENTATIVO_TCC.pptx
AULA_ORIENTATIVO_TCC.pptx
 
AULA_INTRODUÇÃO_PARTE_1.pptx
AULA_INTRODUÇÃO_PARTE_1.pptxAULA_INTRODUÇÃO_PARTE_1.pptx
AULA_INTRODUÇÃO_PARTE_1.pptx
 
AULA_INTRODUÇÃO_PARTE_0.pptx
AULA_INTRODUÇÃO_PARTE_0.pptxAULA_INTRODUÇÃO_PARTE_0.pptx
AULA_INTRODUÇÃO_PARTE_0.pptx
 
TCC Tiago Barreto de Lima.pdf
TCC Tiago Barreto de Lima.pdfTCC Tiago Barreto de Lima.pdf
TCC Tiago Barreto de Lima.pdf
 
Simulando infraestruturas-computacionais-para-a-ubicomp
Simulando infraestruturas-computacionais-para-a-ubicompSimulando infraestruturas-computacionais-para-a-ubicomp
Simulando infraestruturas-computacionais-para-a-ubicomp
 
Isa madapt tese
Isa madapt teseIsa madapt tese
Isa madapt tese
 
Internet das-coisas
Internet das-coisasInternet das-coisas
Internet das-coisas
 
Artigo ihc1
Artigo ihc1Artigo ihc1
Artigo ihc1
 
63924715 xxi-simposio-brasileiro-de-redes-de-computadores
63924715 xxi-simposio-brasileiro-de-redes-de-computadores63924715 xxi-simposio-brasileiro-de-redes-de-computadores
63924715 xxi-simposio-brasileiro-de-redes-de-computadores
 
4452
44524452
4452
 
2007 alexandre rodriguesgomes
2007 alexandre rodriguesgomes2007 alexandre rodriguesgomes
2007 alexandre rodriguesgomes
 
926 4624-1-pb
926 4624-1-pb926 4624-1-pb
926 4624-1-pb
 
45
4545
45
 
170557670 pesquisa-e-ordenacao
170557670 pesquisa-e-ordenacao170557670 pesquisa-e-ordenacao
170557670 pesquisa-e-ordenacao
 
7082 texto do artigo-33807-2-10-20180903
7082 texto do artigo-33807-2-10-201809037082 texto do artigo-33807-2-10-20180903
7082 texto do artigo-33807-2-10-20180903
 
00011
0001100011
00011
 

Listas Encadeadas em C

  • 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; }