Principais operações em Listas TPA - 2009-2. Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.

Slides:



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

Estrutura de Dados Pilha by Aquiles Burlamaqui. Definição Uma pilha é uma das várias estruturas de dados que admitem remoção de elementos e inserção de.
Aula T10 – BCC202 Listas – Parte 2 Túlio Toffolo www. decom. ufop
Motivação para listas duplamente encadeadas e circulares
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Listas Encadeadas CONTEÚDO (1) Motivação (2) Definição (3) Operações
Estruturas de Dados Árvores Binárias
Listas encadeadas Prof. Rosana Palazon.
Listas duplamente encadeadas
Programação II Estruturas de Dados
Interação entre objetos
TADS – Tipos Abstratos de Dados
Listas duplamente encadeadas
Árvores.
DIAGRAMA DE ATIVIDADES
Listas Ligadas – Conceitos Avançados
AED – Algoritmos e Estruturas de Dados
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Listas com Ponteiros Listas encadeadas Listas circulares.
Auditoria de Segurança da Informação
Slides: Prof. João Fabro UTFPR - Curitiba
Slides: Prof. João Fabro UTFPR - Curitiba
Lista Encadeada Circular Lista Duplamente Encadeada
Fraction Action FRACÇÕES.
Listas Encadeadas.
Provas de Concursos Anteriores
© GfK 2012 | Title of presentation | DD. Month
Como aplicar leis da lógica
ALGORITMOS E ESTRUTURAS DE DADOS
exercícios listas encadeadas
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Listas Encadeadas Raquel O. Prates, Luiz Chaimowicz, Jussara Almeida
1 Celulose.
Cinemática Plana de um Corpo Rígido Cap. 16
MECÂNICA - DINÂMICA Cinemática de uma Partícula Cap Exercícios.
Pesquisa em Memória Primária
Árvores binárias de pesquisa com balanceamento
1 António Arnaut Duarte. 2 Sumário: primeiros passos;primeiros passos formatar fundo;formatar fundo configurar apresentação;configurar apresentação animação.
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
Denise Guliato Faculdade de Computação – UFU
GAPH Integração de Hardware do Usuário ao CoreConnect Leandro Heleno Möller e Leonel Pablo Tedesco Prototipação Rápida e Computação.
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Estruturas de Dados com Jogos
Salas de Matemática.
MINISTÉRIO DO PLANEJAMENTO Projeto de Lei Orçamentária 2011 Ministro Paulo Bernardo Silva Brasília, novembro de 2010.
MINISTÉRIO DO PLANEJAMENTO Projeto de Lei Orçamentária 2010 Ministro Paulo Bernardo Silva Brasília, 31 de agosto de 2009.
Á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
EXERCÍCIOS PARA GUARDA-REDES
Faculdade de Informática e Tecnologia de Pernambuco ESTRUTURA DE DADOS
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Grupo A – Azul Claro, Marrom, Laranja
Preleções Científicas Universidade Estadual do Ceará Pró-Reitoria de Extensão Integrais Múltiplas e Integrais de Volume Ministrante: Prof. K. David Sabóia.
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
Rio Verde - Goiás - Brasil
Cinemática Plana de um Corpo Rígido Cap. 16
Á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.
Listas Simplesmente Encadeadas
GINÁSTICA LABORAL UM NOVO CAMINHO.
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”.
Função de buscar elemento na lista simplesmente encadeada
Transcrição da apresentação:

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 =malloc(sizeof(struct nodo)); 4. p->prox=NULL; 5. p->e=e; 6. if (*l == NULL) { 7. *l =p; 8. } 9. else { 10. paux = *l; 11. while(paux->prox){ 12. paux=paux->prox; 13. } 14. paux->prox=p; 15. } }

Insere no final da lista Recursivamente 1.void insereNofinalDaListaRec(Lista *l, Elemento e){ 2. if (*l == NULL) { 3. *l = malloc(sizeof(struct nodo)); 4. (*l)->e=e; 5. (*l)->prox = NULL; 6. } 7. else 8. insereNofinalDaLista( &((*l)->prox), e); 9.} 10.

Inserção Ordenada – 1.void insereListaOrdenada(Lista *l, Elemento e){ 2.Lista paux,pant,p; 3. p = malloc(sizeof(struct nodo)); 4. p->e=e; 5. p->prox = NULL; if (*l == NULL) { 8. *l=p; 9. } 10. else{ 11. pant=*l; 12. paux = pant->prox; 13. while(paux!=NULL){ 14. if((paux)->e.codigo>=e.codigo){ 15. break; 16. } 17. pant=paux; 18. paux=paux->prox; 19. } 20. p->prox=paux; 21. pant->prox = p; 22. } 23.}

Remove da Lista um elemento arbitrário 1.Elemento removeDaLista(Lista *l, int codigo){ 2.Lista paux; 3.Elemento e; 4. if(*l==NULL){ 5. return e; 6. } 7.if((*l)->e.codigo== codigo){ 8.paux = *l; 9. *l=(*l)->prox; 10. e = paux->e; 11. free(paux); 12. return e; 13. } 14. else { 15. return removeDaLista(&((*l)->prox),codigo); 16. } 17. }

Lista Circular Inserção 1.void insereaDireita(Lista *l, Elemento e){ 2. Lista p; 3. p = malloc(sizeof(struct nodo)); 4. p->e = e; 5. if (*l==NULL){ /* Lista vazia */ 6. p->prox = p; 7. *l = p; 8. } 9. else { 10. p->prox = (*l)->prox; 11. (*l)->prox = p; 12. } 13. }

Remoção 1.int removeaDireita(Lista *l, Elemento *ret){ 2. Lista paux; 3. if (*l == NULL){ 4. return 0; 5. } 6. else { 7. paux = (*l)->prox; 8. *ret = paux->e; 9. if (*l==paux){ /* Lista com apenas um nó */ 10. *l = NULL; 11. } 12. else{ 13. (*l)->prox = paux->prox; 14. } 15. free(paux); 16. return 1; 17. } 18. }

Remoção de elemento arbitrário 1.Elemento removeElemento(Lista *l, int codigo){ 2. Lista paux1,paux2; 3. Elemento e; 4. if(*l==NULL){ 5. return e; 6. } 7. paux1=*l; 8. paux2=paux1->prox; 9. do{ 10. if (paux2->e.codigo==codigo){ 11. break; 12. } 13. paux1=paux2; 14. paux2=paux2->prox; 15. }while(paux2!=*l); 16. if(paux2->e.codigo!=codigo){ 17. // elemento não encontrado 18. return e; //retorna e vazio; 19. } 20. paux1->prox = paux2->prox; 21. e = paux2->e; 22. if(*l==paux2){ /* se o nodo procurado é o apontado por l*/ 23. if(paux1!=paux2){ /* lista com mais de um nodo */ 24. *l=paux1; 25. } 26. else { /* lista com um so nodo */ 27. *l=NULL; 28. } 29. } 30. free(paux2); 31. return e; 32. }

Lista duplamente encadeada 1.void insereNaLista(Lista *l, Elemento e){ 2. Lista p; 3. p = malloc(sizeof(struct nodo)); 4. p->e = e; if (*l==NULL){ /* Lista vazia */ 7. p->prox = p; 8. p->ant=p; 9. *l = p; 10. } 11. else { 12. (*l)->ant->prox=p; 13. p->prox=(*l); 14. p->ant=(*l)->ant; 15. (*l)->ant=p; 16. (*l)=p; 17. } 18.}

Remoção 1.Elemento removeDaLista(Lista *l){ 2.Elemento e; 3.Lista anterior, proximo; 4. if(*l==NULL){ // lista vazia 5. return e; 6. } 7. if(*l==(*l)->ant) { // lista de um nodo somente 8. e=(*l)->e; 9. free(*l); 10. *l=NULL; 11. return e; 12. } 13. anterior=(*l)->ant; 14. proximo = (*l)->prox; 15. anterior->prox=proximo; 16. proximo->ant=anterior; 17. e=(*l)->e; 18. free(*l); 19. *l=proximo; 20. return e; 21.}

1.Removendo elemento arbitrário. 2.Elemento removeElemento(Lista *l, int codigo){ 3. Lista aeliminar, proximo,anterior; 4. Elemento e; 5. if(*l==NULL){ // 1.lista vazia 6. return e; 7. } 8. aeliminar = *l; 9. do { 10. if(aeliminar->e.codigo==codigo) 11. break; 12. aeliminar=aeliminar->prox; 13. }while(aeliminar!=*l); 14. if (aeliminar->e.codigo!=codigo){ // 2.elemento nao existe 15. return e; 16. } 17. if ((*l)->ant==(*l)){ // 3. so um elemento na lista 18. *l=NULL; 19. return e; 20. } 21. else{ 22. anterior = aeliminar->ant; 23. proximo = aeliminar->prox; 24. anterior->prox=proximo; 25. proximo->ant=anterior; 26. if(aeliminar==*l){ // 4. se eliminar o elemento apontado por l atualizo l 27. *l=proximo; 28. } 29. } 30. e = aeliminar->e; 31. free(aeliminar); 32. return e; 33.}