Escolar Documentos
Profissional Documentos
Cultura Documentos
[entrada]:
T - Hashtable
x - valor a ser buscado
[saida]:
se o valor está na tabela, retorna o nó anterior ao nó que contém o valor
achado, caso contrário retorna λ
procedimento buscar(T, x)
{
index = h(x)
node_ptr = T[index].head
prev_node = λ
while (node_ptr != λ)
{
if (node_ptr->value == x)
{
return prev_node
}
prev_node = node_ptr
node_ptr = node_ptr->next
}
return λ
}
return;
}
else
{
// aqui ptr é o ultimo nó da lista encadeada
ptr->next = make_node(x)
}
}
}
procedimento remover(T, x)
{
index = h(x)
head = T[index].head
if (head == null)
{
// o elemento não existe na tabela, assim sairemos da função
return;
}
if (head->value == x)
{
tmp = head->next;
// desalocamos a memoria
free(head);
// atualizamos o nó
head = tmp;
}
else
{
ptr = buscar(T, x)
// se o elemento existir
if (ptr != λ)
{
// o ptr aqui aponta para o nó anterior ao nó que contém o
elemento
// que queremos remover
target_node = ptr->next;
ptr->next = ptr->next->next;
// desalocamos a memoria
free(target_node)
}
}
}