lista encad exemplo
TRANSCRIPT
-
7/24/2019 Lista Encad Exemplo
1/17
Estrutura de Dados
Listas Encadeadas
Prof. Pedro Lus Antonelli
Anhanguera Educacional
-
7/24/2019 Lista Encad Exemplo
2/17
Lista Encadeada - Exemplo
Exemplo de cdigo para a implementao de uma lista encadeadas em
C, para armazenarvalores inteiros, utilizado o compiladorGNU g++
Um n da lista pode ser representado pela estrutura abaixo:
typedef struct no
{
int info; //informao guardada no n
struct no *prox; // ponteiro para o prximo n
} Lista;
-
7/24/2019 Lista Encad Exemplo
3/17
Lista Encadeada - Inicializao
A funo retorna uma lista vazia:
Lista* Inicializar (void)
{
return NULL;
}
-
7/24/2019 Lista Encad Exemplo
4/17
Lista Encadeada - Teste
Essa funo testa se uma lista est vazia e retorna verdadeiro ou falso
bool Teste_vazia ( Lista* l)
{
if (l == NULL)
return true;
elsereturn false;
}
-
7/24/2019 Lista Encad Exemplo
5/17
Lista Encadeada Insero
Funo que insere um n no incio da lista
Lista* Inserir ( Lista* l, int i )
{Lista* novo = (Lista*) malloc(sizeof(Lista) );
novo->info = i;
novo->prox = l;
return novo;
}
-
7/24/2019 Lista Encad Exemplo
6/17
Lista Encadeada Impresso
Funo auxiliar para imprimir a lista
void Imprimir ( Lista* l )
{
Lista* p; // varivel auxiliar para percorrer a lista
for (p = l; p != NULL; p = p->prox)
{
printf("info = %d \n", p->info);
}
}
-
7/24/2019 Lista Encad Exemplo
7/17
Lista Encadeada Busca
Funo que busca um elemento na lista e retorna o n se
encontrado ouNullse no encontrado.
Lista* Busca (Lista* l, int v)
{
Lista* p;
for (p=l; p!=NULL; p=p->prox)
{
if (p->info == v)
{ return p; } // achou o elemento ( retorna o n )
}
return NULL; // no achou o elemento (retorna NULL )
}
-
7/24/2019 Lista Encad Exemplo
8/17
Lista Encadeada Retirada
Funo que retira um elemento na lista
Lista* Retira ( Lista* l, int v )
{
Lista* ant = NULL; // ponteiro para elemento anterior
Lista* p = l; // ponteiro para percorrer a lista
while (p != NULL && p->info != v) //procura elemento na lista,
{
ant = p; // guardando o anterior
p = p->prox;
}
-
7/24/2019 Lista Encad Exemplo
9/17
if (p == NULL ) // verifica se achou elemento
return l; se no achou, retorna lista original
if (ant == NULL) // retira elemento do inicio
{ l = p->prox; }
else // retira elemento do meio da lista
{ ant->prox = p->prox; }
return l; // retorna a lista atualizada}
-
7/24/2019 Lista Encad Exemplo
10/17
Lista Encadeada Destruio
Funo que destri a lista, liberando a memria alocada.
void Libera (Lista* l)
{
Lista* p = l;
while (p != NULL)
{
Lista* t = p->prox; // guarda referncia para o prximo elemento
free(p); // libera a memria apontada por p
p = t; // faz p apontar para o prximo
}
}
-
7/24/2019 Lista Encad Exemplo
11/17
Testando as funes
#include
#include
#include "Lista.h"
int main()
{
Lista* lista1; // declara uma lista
lista1 = Inicializar(); // inicializa a lista
-
7/24/2019 Lista Encad Exemplo
12/17
printf("\n Inserindo os elementos 23, 45, 27e 51 na lista \n ");
lista1 = Inserir(lista1, 23); /* insere na lista o elemento 23 */
lista1 = Inserir(lista1, 45); /* insere na lista o elemento 45 */
lista1 = Inserir(lista1, 27); /* insere na lista o elemento 23 */
lista1 = Inserir(lista1, 51); /* insere na lista o elemento 45 */
//-------------------------------------------------------
printf("\n Imprimindo a lista atual \n ");
imprimir(lista1);
system("PAUSE");
-
7/24/2019 Lista Encad Exemplo
13/17
//----------------------------------------------------------
printf("\n Retirando o elemento 27 \n ");
lista1 = retira(lista1,27);
//----------------------------------------------------------printf("\n Imprimindo a lista atual \n ");
imprimir(lista1);
system("PAUSE");
-
7/24/2019 Lista Encad Exemplo
14/17
//------------------------------------------------------------
printf("\n Inserindo o elemento 77 na lista \n ");
lista1 = Inserir(lista1, 77);
//----------------------------------------------------------printf("\n Imprimindo a lista atual \n ");
imprimir(lista1);
system("PAUSE");
return EXIT_SUCCESS;
}
-
7/24/2019 Lista Encad Exemplo
15/17
Exerccios
1- Implementar nas funes que imprime a lista, busca e retira elementos, um
teste para verificar se a mesma est vazia.
2- Implementar ( tendo como base o cdigo de exemplo), modificaes para
construir um Lista e uma Pilha Dinmica.
Enviar via email [email protected] at 10/11/2015
mailto:[email protected]:[email protected]:[email protected] -
7/24/2019 Lista Encad Exemplo
16/17
BIBLIOGRAFIA
W. Celes, W. R. Cerqueira, J.L. Rangel. Introduo a Estruturas de Dados -
com tcnicas de programao em CEd. Campus
TENENBAUM, Aaron M. Estrutura de Dados Usando C. 1 ed. So Paulo:PEARSON EDUCATION, 2005.
VELOSO, Paulo A. S.. Estrutura de Dados. 1 ed. Rio de Janeiro: Campus,1996.
PEREIRA, Silvio do Lago. Estrutura De Dados Fundamentais : ConceitosE Aplicaes. 12 ed. SoPaulo: rica, 2008
-
7/24/2019 Lista Encad Exemplo
17/17
MANZANO, Jos Augusto N. Garcia. Algoritmos : Lgica paradesenvolvimento de programao de computadores. 21 ed.So Paulo:
rica, 2008.
FORBELLONE, A. L.. Lgica De Programao. 1 ed. So Paulo: Pearson,2008.
CORMEN, Thomas H.. Algoritmos : Teoria e Prtica. 2 ed. Rio de Janeiro:Campus, 2002.
http://www.jacintomendes.eti.br/mackenzie/peii/aulas/sandra/PEII_Aula12.pdf. Acesso em 02/02/2012
http://www.dainf.ct.utfpr.edu.br/~karla/Acesso em 02/02/2012
http://www.rcosta62br.unifei.edu.brAcesso em 03/02/2012
http://gaveta-virtual.blogspot.com.br/2011/06/filas.htmlAcesso em 10/04/2012
http://www.jacintomendes.eti.br/mackenzie/peii/aulas/http://www.dainf.ct.utfpr.edu.br/~karla/http://www.rcosta62br.unifei.edu.br_ccf120_aula_2%29acesso/http://gaveta-virtual.blogspot.com.br/2011/06/filas.htmlhttp://gaveta-virtual.blogspot.com.br/2011/06/filas.htmlhttp://gaveta-virtual.blogspot.com.br/2011/06/filas.htmlhttp://www.rcosta62br.unifei.edu.br_ccf120_aula_2%29acesso/http://www.dainf.ct.utfpr.edu.br/~karla/http://www.jacintomendes.eti.br/mackenzie/peii/aulas/