1 / 10

Estruturas de Dados

Estruturas de Dados. Listas. Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com. http://www.bolinhabolinha.com. Onde Estamos ?. Ementa Introdução à estrutura de dados. Alocação estática de memória. Alocação dinâmica de memória. Pilhas. Filas. Listas. Algoritmos recursivos.

Télécharger la présentation

Estruturas de Dados

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Estruturas de Dados Listas Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com

  2. Onde Estamos ? • Ementa • Introdução à estrutura de dados. • Alocação estática de memória. • Alocação dinâmica de memória. • Pilhas. • Filas. • Listas. • Algoritmos recursivos. • Árvores. • Grafos.

  3. Listas • Consiste em uma seqüência de elementos composto de: • Um campo de dados • Uma referência para outro elemento (link) • A inserção e remoção tem tempo constante (complexidade) • NÃO consigo fazer acesso aleatório aos elementos • Diferença com vetores • Vetores alocam memória para todos os elementos • Na lista a memória é alocada para cada item criado

  4. Listas • Podem ser implementadas em linguagem C, utilizando ponteiros e estruturas • Elementos (Estrutura) • Campo de referência para o outro elemento (ponteiro) struct lista { int valor; struct lista *proximo; };

  5. Criando • Para poder acessar a lista, um elemento apontando para o elemento inicial é criado • Quando a lista é criada, o elemento inicial é criado valendo NULL • struct lista *inicio; • Inicio = NULL;

  6. Inserindo no início • Para inserir um nó no início • Crie um novo nó e aloque memória • struct lista *aux; • aux=(struct lista*)malloc(sizeof(struct lista)); • Preencha os dados • aux->valor=10; • Manobre os ponteiro • Novo nó aponta para o início aux->proximo=inicio; • Nó inicial aponta para o novo nó inicio = aux;

  7. Pesquisando • Copiar o valor do nó inicial para o valor do nó atual • Enquanto o atual não for NULL (isto é, ainda existem elementos na lista) • Verificar se o valor procurado está neste nó, caso contrário, pular para o próximo nó struct lista *atual; atual=(struct lista*)malloc(sizeof(struct lista)); atual = inicio; while (atual != NULL) { if (atual->valor == valorprocurado) printf(“Achou”); else atual= atual->proximo; }

  8. Removendo • Localize o nó anterior ao nó que deve ser removido • Faça-o apontar para o nó apontado pelo nó que irá ser removido

  9. Exercícios 1-) Crie funções para cada operação (adicionar, remover, procurar) 2-) Crie uma função que traga quantos elementos tem a lista. 3-) Escreva uma função para remover de uma lista encadeada todos os elementos que contêm o valor “y” (digitado pelo usuário). 4-) Faça uma função que insira o elemento no final da lista 4-) Faça uma função que remova o elemento no final da lista 4-) Faça uma função que remova o primeiro elemento da lista 5-) Crie uma função que crie uma lista ligada a partir de um vetor fornecido pelo usuário. 6-) Faça uma função que some todos os elementos de uma lista 7-) Crie uma função que troque dois elementos de uma lista de lugar.

  10. Bibliografia • Livro texto • TENENBAUM, Aaron M; SOUZA, Tereza Cristina Félix de. Estruturas de Dados usando C. 1ª ed. São Paulo: Makron Books,1995. • PEREIRA, Silvio do Lago. Estrutura de Dados Fundamentais : conceitos e aplicações. 9ª ed. São Paulo: Érica, 2006. • VELOSO, Paulo A. S.. Estrutura de Dados. 1ª ed. São Paulo: Campus, 1983. • Complementar • VILLA, Marcos Vianna. Estrutura de Dados : conceitos e técnicas de implementação. 1ª ed. Rio de Janeiro: Campus, 1993. • WIRTH, Niklaus. Algoritmos e estruturas de dados. 1ª ed. Rio de Janeiro: LTC, 1999 • CORMEN, Thomas H.. ALGORITMOS : TEORIA E PRÁTICA. 2ª ed. Rio de Janeiro: CAMPUS, 2002 • SCHILDT, Herbert. C Completo e Total. 3ª ed. São Paulo: Pearson Education, 2005

More Related