Вы находитесь на странице: 1из 17

Estrutura de Dados

Listas Encadeadas
Prof. Pedro Lus Antonelli
Anhanguera Educacional

Lista Encadeada - Exemplo


Exemplo de cdigo para a implementao de uma lista encadeadas em
C, para armazenar valores inteiros, utilizado o compilador GNU 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;

Lista Encadeada - Inicializao

A funo retorna uma lista vazia:


Lista* Inicializar (void)
{
return NULL;

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;
else
return false;
}

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

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

Lista Encadeada Busca


Funo que busca um elemento na lista e retorna o n se
encontrado ou Null se 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 )

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;
p = p->prox;
}

// guardando o anterior

if (p == NULL )
return l;

if (ant == NULL)

// verifica se achou elemento


se no achou, retorna lista original

// retira elemento do inicio

{ l = p->prox; }

else

// retira elemento do meio da lista

{ ant->prox = p->prox; }
return l;
}

// retorna a lista atualizada

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

Testando as funes

#include <iostream>

#include <stdbool.h>
#include "Lista.h"
int main()
{
Lista* lista1;

// declara uma lista

lista1 = Inicializar(); // inicializa a lista

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");

//---------------------------------------------------------printf("\n Retirando o elemento 27 \n ");


lista1 = retira(lista1,27);
//---------------------------------------------------------printf("\n Imprimindo a lista atual \n ");
imprimir(lista1);
system("PAUSE");

//-----------------------------------------------------------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;

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 ed_2015@pedraorc.com.br at 10/11/2015

BIBLIOGRAFIA
W. Celes, W. R. Cerqueira, J.L. Rangel. Introduo a Estruturas de Dados com tcnicas de programao em C
Ed. 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 : Conceitos
E Aplicaes. 12 ed. So
Paulo: rica, 2008

MANZANO, Jos Augusto N. Garcia. Algoritmos : Lgica para


desenvolvimento 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.br Acesso em 03/02/2012
http://gaveta-virtual.blogspot.com.br/2011/06/filas.html Acesso em 10/04/2012

Вам также может понравиться