lista encad exemplo

Upload: luiz

Post on 20-Feb-2018

224 views

Category:

Documents


0 download

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/