180 likes | 302 Views
Aula 11. LISTAS LIGADAS. Objetivos :. Racionalizar as operações de INSERÇÃO e REMOÇÃO; Racionalizar a utilização da memória utilizando apenas o necessário; Condicionar o crescimento da lista apenas à disponibilidade de memória. Características :.
E N D
Aula 11 LISTAS LIGADAS
Objetivos: • Racionalizar as operações de INSERÇÃO e REMOÇÃO; • Racionalizar a utilização da memória utilizando apenas o necessário; • Condicionar o crescimento da lista apenas à disponibilidade de memória.
Características: • Utilização de variáveis dinâmicas e apontadores; • Cada nó além da informação propriamente dita dever armazenar uma referência ao próximo elemento da lista. • É necessária a existência de uma variável que armazene o endereço do primeiro nó da lista já que este não é o seguinte de nenhum outro; • É necessário convencionar um valor para representar apontador nulo, ou seja, cujo valor não seja nenhum endereço válido de memória. (NULL) ; • NULL = constante que representa apontador para nenhum nó. Será usado para representar lista vazia ou fim de lista
Listas Simplesmente Encadeadas • Estrutura de um nó: • O campo INFORMAÇÃO destina-se ao armazenamento da informação propriamente dita do nó. Pode ser de qualquer tipo válido de dado ( simples ou composto); • O campo PRÓXIMO é estrutural. Serve para armazenar o endereço do próximo nó da lista. É do tipo apontador para nó. Informação próximo
Inserção de um nó em uma Lista Ligada • Conseguir um endereço p para um novo nó • Colocar a informação desejada no respectivo campo do nó apontado por p • O endereço do primeiro nó existente é colocado no campo de endereço do nó recém-criado • O conteúdo da variável externa lista é atualizado com o valor do ponteiro presente em p. O conteúdo de p pode ser,então, descartado
Inserção de um nó em uma Lista Ligada - Algoritmo p = getno () info(p) = x prox (p) = plist plist=p
Remoção de um nó em uma Lista Ligada • O valor do endereço armazenado em plist é guardado na variável p • O conteúdo do campo endereço do nó a ser excluído é armazenado em plist • O conteúdo do campo de informação do nó a ser excluído é armazenado em x para uma possível utilização • O endereço do nó a ser excluído é fornecido como área de memória livre
Remoção de um nó em uma Lista Ligada - Algoritmo p = plist plist = prox (p) x = info (p) freeno (p)
Pilha: Estrutura linear com restrição do tipo LIFO (Last In First Out). Operações com as Pilhas: EMPILHAR (PUSH): Inserção de um elemento numa pilha; DESEMPILHAR (POP): Remoção de um elemento de uma pilha; CONSULTAR (TOP): Obtém valor do elemento que foi colocado por último na pilha. Todas as operações envolvem o TOPO da pilha. TOPO da pilha = “lugar” ocupado pelo elemento que foi colocado por último na pilha. IMPLEMENTAÇAO DE PILHA ATRAVES DE LISTA ENCADEADA
Estrutura a ser utilizada: topo /
Representação das Filas como Listas Ligadas Operação de Remoção
remFila(q) se (filavazia(q) = “v”) então imprima “underflow na fila!” senão p = q.inic x= info(p) q.inic = prox (p) se (q.inic = nulo) então q.fim = nulo fim_se freeno (p) return x fim_se
Representação das Filas como Listas Ligadas Operação de Inserção
p = getno ( ) info (p) = x prox (p) = nulo se (q.fim = nulo) então q.inic = p senão prox (q.fim) = p fim_se q.fim = p Insfila(q,x)
insdepois(p,x) q = getno ( ) info (q) = x prox (q) =prox (p) prox (p) = q remdepois (p,x) q =prox (p) x = info (q) prox (p)= prox (q) freeno (q) Inserção e Remoção - Lista Ligada