Listas encadeadas Prof. Rosana Palazon.

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Estruturas de Dados Listas Prof. Rodrigo Rocha
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações
Estruturas de Dados Árvores Binárias
Recursividade Prof. Rosana Palazon.
Algoritmos de manipulação de estruturas elementares de dados
Listas duplamente encadeadas
Programação II Estruturas de Dados
TADS – Tipos Abstratos de Dados
TADS – Tipos Abstratos de Dados
Listas duplamente encadeadas
1 Tipos definidos O programador pode definir seus próprios tipos de dados tipos complexos usados da mesma forma que os simples declaram-se variáveis utilizando-se.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
AED – Algoritmos e Estruturas de Dados
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Prof.: Sergio Pacheco Estruturas de Dados I Prof.: Sergio Pacheco 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Universidade de Brasília
Slides: Prof. João Fabro UTFPR - Curitiba
Slides: Prof. SIMÃO Revisão: Prof. João Fabro
Slides: Prof. João Fabro UTFPR - Curitiba
Lista Encadeada Circular Lista Duplamente Encadeada
Listas Encadeadas.
Alocação Dinâmica de Memória
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Algoritmos e Estruturas de Dados
ALGORITMOS E ESTRUTURAS DE DADOS
exercícios listas encadeadas
Prof. Hilton Cardoso Marins Junior LISTA LINEAR
Listas Encadeadas Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida
Algoritmos e Estruturas de Dados
Pesquisa em Memória Primária
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
INTELIGÊNCIA ARTIFICIAL
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
Árvores Binárias de Pesquisa
TAD Pilha com Alocação Dinâmica de Memória
Implementação de FILAS com Alocação Dinâmica
Lista Encadeada Circular Lista Duplamente Encadeada
Estrutura de dados II Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Listas lineares Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Estruturas de Dados Aula 9: Listas (parte 1)
Lista encadeada Representar um grupo de dados.
Estruturas de Dados Aula 11: TAD Pilha
Árvore Binária de Busca
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Listas.
Filas. #define MAXFILA 100 typedef struct queue { int item [ MAXFILA]; int inic, fim; } fila; fila q;
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Estruturas de Dados Aula 17: Estruturas Genéricas
ESTRUTURA DE DADOS Aula 10 – Listas Duplamente Encadeadas.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Prof. Hilton Cardoso Marins Junior ÁRVORES BINÁRIAS.
Prof. Alessandro Gonçalves
Prof. Hilton Cardoso Marins Junior
Estruturas de Dados Aula 10: Listas (parte 2) 07/05/2014.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Lista Ligada Estrutura de Dados II Prof. Gale. Vantagens  Crescem (ou decrescem) à medida que elementos são inseridos (ou removidos)  seqüência encadeada.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Fundamentos de Programação 1 Slides 21 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Encadeada”.
Fundamentos de Programação 1 Slides 22 Prof.ª Fabiany e Prof. SIMÃO Linguagem C “Lista Duplamente Encadeada - Projeto com vários Arquivos”.
Transcrição da apresentação:

Listas encadeadas Prof. Rosana Palazon

Listas São usadas para tratar coleções de dados por meio de uma estrutura (de dados) mais flexível do que um vetor. As listas, diferentemente dos vetores, podem crescer ou diminuir quando necessário, por isso são chamadas de estruturas dinâmicas

Listas encadeadas Uma lista é chamada encadeada quando um elemento aponta para o seu próximo. Consideremos: typedef struct lista{ int info; struct lista *prox; }Lista; //definição da lista Lista *l; //ponteiro que deve receber o endereço da lista

Listas encadeadas (criação) Função de criação: /* retorna uma lista vazia */ Lista * cria_lista() { return NULL; }

Listas encadeadas (inserção) Função de inserção: /* insere o novo dado no início da lista , e retorna a lista atualizada*/ Lista * insere_lista(Lista *l, int dado) { Lista *novo=(Lista*) malloc (sizeof(Lista)); novo->info =dado; novo->prox=l; return novo; }

Listas encadeadas (exibição) Função de exibição: /* percorre a lista do inicio até o fim mostrando os elementos*/ void exibe_lista(Lista* l) { //variável usada para percorrer a lista Lista *aux; for(aux=l;aux!=NULL;aux=aux->prox) printf("%d\t", aux->info); }

Lista encadeada (main) Como seria o trecho do main correspondente à criação e inserção de valores na lista? int main() { Lista *l; //declara uma lista não inicializada l=cria_lista(); //inicializa a lista l=insere_lista(l,10); //insere o elemento 10 l=insere_lista(l,20); //insere o elemento 20 l=insere_lista(l,30); //insere o elemento 30 exibe_lista(l); //mostra o conteúdo da lista printf("\n\n"); system("pause"); return 0; }

Listas encadeadas (lista vazia) Função de verificação de lista vazia: /* retorna 1 se vazia ou zero se falso*/ int lista_vazia(Lista* l) { if (l==NULL) return 1; else return 0; }

Listas encadeadas (busca) Função de busca de um elemento na lista: /* retorna o elemento ou NULL se não achou*/ Lista* busca_lista(Lista* l, int dado) { //variável usada para percorrer a lista Lista *a; for(a=l;a!=NULL;a=a->prox) if(a->info == dado) return a; } return NULL;

Listas encadeadas (remoção) A retirada de um elemento da lista é um pouco mais complexa pois implica no religamento dos ponteiros.

Listas encadeadas (remoção) Função que retira um elemento da lista: /* retorna o elemento ou a lista original*/ Lista* retira_lista(Lista* l, int dado) { Lista* ant=NULL; //ponteiro para o anterior Lista *aux=l;// ponteiro para percorrer a lista //procura o elemento na lista guardando seu anterior while(aux!=NULL && aux->info!=dado) { ant=aux; aux=aux->prox; } //verifica se achou o elemento if(aux==NULL) { printf("\nNao localizado\n"); return l; //não achou - retorna a lista //retira o elemento if (ant==NULL) //primeiro da lista l=aux->prox; else //retira do meio/fim da lista ant->prox=aux->prox; free(aux); return l;

Lista encadeadas – (inserção ordenada) Lista* insere_ordenado(Lista* l, int v) { Lista* ant=NULL; Lista* p=l; //cria novo elemento Lista* novo=(Lista*)malloc(sizeof(Lista)); novo->info=v; //procura posição de inserção while (p!=NULL && p->info < v) { ant=p; p=p->prox; } //encadeia o elemento if(ant==NULL) {//insere no inicio novo->prox=l; l=novo; else //insere no meio ou no fim da lista novo->prox=ant->prox; ant->prox=novo; return l;