A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Estrutura de Dados (DPADF 0056) Aula 8 – Estr. Clássicas - Lista Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior.

Apresentações semelhantes


Apresentação em tema: "Estrutura de Dados (DPADF 0056) Aula 8 – Estr. Clássicas - Lista Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior."— Transcrição da apresentação:

1 Estrutura de Dados (DPADF 0056) Aula 8 – Estr. Clássicas - Lista Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati – www.cafw.ufsm.br/~bruno

2 Conjunto de dados ordenados com número variado de elementos

3 Listas Também conhecida por: lista linear, lista encadeada, lista ligada; Dá-se o nome de lista ao TAD que armazena um conjunto de elementos denominados de “nodos” (itens da lista); Em geral há uma relação de ordem entre os nodos de uma lista; ▫ Ordem de inclusão; ▫ Ordem crescente; ▫ Ordem decrescente; ▫ etc.

4 Listas Pode ser implementada com diferentes estratégias de armazenamento: ▫ Sequencial (com contiguidade física); ▫ Encadeada (com uso de ponteiros). Um elemento de uma lista pode ser um dado primitivo ou um dado composto; Uma lista é homogênea quanto todos seus elementos são do mesmo tipo ou heterogênea quando não o são;

5 Listas Diferentemente dos TAD Pilha e Fila a Lista não impõe uma regra fixa para inserção e retirada de elementos; ▫ Um elemento pode ser incluído ou retirado de qualquer lugar da lista desde que essa ação mantenha a relação de ordem existente; ▫ Um elemento em uma lista pode possuir um ou mais campos de encadeamento (elos);

6 Aplicações de Listas Indexação em banco de dados ▫ Cada índice é uma lista de registros do banco de dados para um determinado critério de ordenação; Conjuntos ▫ 7 dias da semana (segunda-feira antecede a terça-feira e vem depois do o domingo); ▫ 12 meses do ano; Qualquer lista que precise de manipulação (inclusão, exclusão, pesquisa, etc.)

7 Implementação de Listas Uma lista pode ser implementada de duas formas: ▫ Lista sequencial, onde cada elemento ocupa uma posição sucessiva ao elemento anterior (um vetor é tipicamente uma lista sequencial); ▫ Lista encadeada, onde a ordem dos elementos é dada pelos apontadores de seus elos; 012345678 ESTRUTURA E S T R U R T U A

8 Etapa 1 – Definição Conceitual struct elemento { char conteudo; struct elemento* proximo; } typedef struct elemento Elemento; Como representar uma lista?

9 Se eu guardar o primeiro elemento (o cabeça) da lista basta seguir o encadeamento S T R U T Cabeça E U R A Ø

10 O que se pode fazer com uma lista O S Cabeça S Pesquisar elementos O S Cabeça S Excluir elementos O S Cabeça S Incluir elementos O S Cabeça S Excluir uma lista O S Cabeça S Exibir os elementos

11 Etapa 2 – Definição das Operações int incluirElemento( Elemento** inicial, Elemento** posicao, char v); Elemento* pesquisarElemento(Elemento* inicial, char v) int removerElemento( Elemento** inicial, Elemento* posicao, Elemento** anterior); void liberarLista(Elemento* inicial); void mostrarLista(Elemento* inicial); Melhor aprofunda r!

12 int incluirElemento(...) incluirElemento(Elemento** inicial, Elemento** posicao, char v) S T Cabeça E R Ø U R R 1º elemento da lista elemento anterior (a inclusão ocorre após ele) valor a ser inserido Situação 1 – A lista não está vazia Aloca-se espaço para um novo elemento; O novo elemento aponta para o elemento apontado por “posição” e “posição” aponta para o novo elemento E a situação 2? (se a lista está vazia)

13 Elemento* pesquisarElemento(...) Elemento* pesquisarElemento(Elemento* inicial, char v); S T Cabeça E R Ø U R Retorno da pesquisa U valor a ser pesquisado A partir do 1º elemento verifica-se sequencialmente se o conteúdo do elemento é igual ao valor pesquisado Se o elemento for encontrado seu endereço é retornado (em não o encontrando retorna-se vazio) 1º elemento da lista E = U × S = U × T = U × R = U × ok U = U

14 int removerElemento(Elemento** inicial, Elemento* posicao, Elemento** anterior) int removerElemento(...) S T Cabeça E R Ø U R 1º elemento da lista elemento anterior (a exclusão ocorrerá após ele) O elemento anterior aponta para o elemento apontado por aquele que será excluído ; Elemento que será excluído Libera-se a memória do elemento a ser excluído; × E se o elemento inicial for excluído?

15 void liberarLista(...) void liberarLista(Elemento* inicial); S T Cabeça E R Ø U R Partindo-se do 1º elemento guarda-se o indicador (ponteiro) para o próximo elemento e elimina-se o atual elemento. 1º elemento da lista × × × × × temp × ×

16 void mostrarLista(...) void mostrarLista(Elemento* inicial); Diferentemente de Pilhas e Filas uma Lista permite a exibição de seus elementos sem que isso comprometa ou destrua a Lista. Basta conhecer o endereço do primeiro elemento e percorrer todos os elos dos apontadores.

17 Etapa 3 – Implementação e Utilização Elemento* cabeca = NULL; incluirElemento(&cabeca, NULL, ‘A’); incluirElemento(&cabeca, NULL, ‘T’); Elemento *aux1, *aux2; aux1 = pesquisarElemento(cabeca, ‘T’); if (aux1 != NULL) { printf("Elemento ‘%c' encontrado",aux1->conteudo); incluirElemento(&cabeca, &aux1, ‘H’); } aux2 = pesquisarElemento(cabeca, ‘H’); removerElemento(&cabeca, aux2, &aux1); mostrarLista(cabeca); liberarLista(cabeca);

18 Exercícios para fixação

19 Lista de Tarefas (TO DO List) Que tal implementar um TAD Lista para guardar sua lista de tarefas? ▫ A lista deve ser construída de acordo com as tarefas mais prioritárias (que devem ser resolvidas primeiro); ▫ Implemente operações para mudar a prioridade dos itens da lista;


Carregar ppt "Estrutura de Dados (DPADF 0056) Aula 8 – Estr. Clássicas - Lista Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior."

Apresentações semelhantes


Anúncios Google