• Nenhum resultado encontrado

Listas. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria

N/A
N/A
Protected

Academic year: 2021

Share "Listas. Aula 02. DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria"

Copied!
12
0
0

Texto

(1)
(2)

Operações getnode( ) e freenode( )

Implementação ligada de filas

(3)

Idealmente

, não existe limitação para o número de nós 

disponíveis para uma lista (

memória infinita

)

Para atribuir endereço a um novo nó, empregar a função getnode

Não havendo limitação de espaço, não há necessidade de destruir um  após seu uso. A função freenode perde sua necessidade

Em uma 

implementação prática

, existe a 

limitação de 

armazenamento

imposta pela memória física do computador

A operação freenode libera o nó de seu contexto atual para a 

reutilização em outro contexto

(4)

Pode‐se alocar na memória um número máximo de nós

Essa lista de nós vazios é chamada de lista livre

getnode  remove o primeiro nó da lista da lista livre e o torna  disponível para uso no programa principal

(5)

Se a lista livre 

vazia

Todos os nós estão atualmente alocados

Impossibilidade de chamar getnode( )  EstouroSituação análoga a uma pilha ultrapassando o limite do vetorDeseja‐se inserir mais um dado, mas não há espaço na memória

Operações getnode

e freenode

Lista livre avail Contexto atual

getnode( )

info next

(6)

Operação 

getnode()

(conceito)

Operação 

freenode()

(conceito)

Operações getnode

e freenode

// Operação getnode

p = getnode(); // Obtém um nó da lista livre

// Implementação da função

if (avail == null) { // Testa estouro da lista livre

printf(“Estouro”); exit(1);

}

p = avail; // Define “p” para 1º de “avail”

avail = next(avail); // Retira 1º da lista livre

// Operação freenode

next(p) = avail; // Campo next de “p” recebe “avail”

(7)

Filas

rear  Ponteiro para o final da fila (entrada de dados)Endereço do final:  q.rear

front  Ponteiro para o início da fila (saída de dados)Endereço do início:  q.front

Implementação de fila em 

lista ligada

Requer o emprego de dois ponteiros

(8)

Operação 

insert(q, x)

1)  Obter um nó vazio e definir o conteúdo de uma variável p com o  endereço desse nó

Assim, p será o ponteiro para o nó recém‐alocado

(9)

3) Definir next do nó recém‐alocado

Deseja‐se inserir o dado x no final da fila (rear)Logo, não há seguinte

(10)

Operação 

insert(q,x)

(conceito)

Implementação ligada de filas

// Operação insert(q,x)

p = getnode(); // Obtém um nó “p” da lista livre

info(p) = x; // Grava dado no campo info de “p”

next(p) = null; // Define “p” como o último nó

if (q.rear == null) // Fila circular (testa o final

q.front = p; // atual) e redefine o endereço do

else // atual último elemento da fila,

next(q.rear) = p; // que passará a ser o penúltimo

(11)

Operação 

remove(q)

(conceito)

Implementação ligada de filas

// Operação remove(q)

if (empty(q)) { // Verifica se a pilha está vazia

printf(“Underflow na fila”); exit(1);

}

p = q.front; // Obtém endereço da início da fila

x = info(p); // Obtém dado do início da fila

q.front = next(p); // Redefine o início da fila

if (q.front == null) // Teste de fila vazia

q.rear = null; // Define final=início (fila vazia)

freenode(p); // Libera nó “p” para a lista vazia

(12)

Observações

Desvantagens

O nó de uma lista ocupa mais espaço de armazenamento do que  um elemento correspondente de um vetor

Cada inclusão/eliminação de um elemento de uma pilha ou fila

requer a eliminação/inclusão de um nó na lista livre

Referências

Documentos relacionados

Dessa forma, diante das questões apontadas no segundo capítulo, com os entraves enfrentados pela Gerência de Pós-compra da UFJF, como a falta de aplicação de

int *pi // variável “pi” é ponteiro para inteiro float *pc // variável “pc” é ponteiro para float char *xy // variável “xy” é ponteiro para caracter. unsigned long int

duplamente encadeada com este valor caso o mesmo ainda não exista na lista, em ordem CRESCENTE, ou seja, sempre entre um nó contendo um valor menor e outro contendo um valor

 São TADs representados através de listas sequenciais.. (fixas) ou encadeadas (dinâmicas), em que a seguinte regra deve

função recursiva, mais recursos de memória são necessários para executar o programa, o que pode torná-lo lento ou. computacionalmente

 Caminho simples que contém todas as arestas do grafo (e,. consequentemente, todos os

Janaína Oliveira, que esteve presente em Ouagadougou nas últimas três edições do FESPACO (2011, 2013, 2015) e participou de todos os fóruns de debate promovidos

Neste capítulo, será apresentada a Gestão Pública no município de Telêmaco Borba e a Instituição Privada de Ensino, onde será descrito como ocorre à relação entre