Aula-hashing

Disponível somente no TrabalhosFeitos
  • Páginas : 3 (675 palavras )
  • Download(s) : 0
  • Publicado : 15 de março de 2013
Ler documento completo
Amostra do texto
#include
#include
#define TAM 10
//estrutura para listas duplamente encadeadas
typedef struct cel {
int conteudo;
struct cel *ant, *prox;
} Celula;
/** Metodo que adiciona elementosna lista duplamente encadeada
controlando a duplicidade e ordem */
Celula *inserir (int valor, Celula *lista){
Celula *nova;
nova=(Celula*) malloc(sizeof(Celula));
nova->conteudo=valor;if (!lista){ //1ª VEZ
lista=nova;
nova->ant=NULL; //lista->ant=NULL;
nova->prox=NULL; //lista->prox=NULL;
}
else {
//GARANTIR QUE A LISTA ESTÁ NO INíCIO
while(lista->ant)
lista=lista->ant;
if (valorconteudo){ //o valor sera o 1º da lista
lista->ant=nova;
nova->prox=lista;
nova->ant=NULL;
}else{ //--------------------------------------//
while ((lista->prox)&&(valor>lista->conteudo)) //DEPOIS DO && PARA CONTROLAR ORDEM! [1,2,3,4...]lista=lista->prox;
//VERIFICAR PQ SAIR DA REPETIÇÃO
if (valor==lista->conteudo) printf ("Dado jah cadastrado!\n"); //CONTROLA DUPLICIDADE
else if (valorconteudo){lista->ant->prox=nova;
nova->ant=lista->ant;
nova->prox=lista;
lista->ant=nova;
}
else {
nova->prox=NULL;
nova->ant=lista;lista->prox=nova;
}
}
}
return lista;
}

/* funcao que recebe um valor inteiro e uma lista duplamente encadeada
* e remove da lista a primeira celula que contiver valor,
* caso a celula existir.Ao final, a lista alterada eh retornada
*/
Celula *remover(int valor, Celula *lista) {
Celula *pAux;

while (lista->ant)
lista = lista->ant;

pAux = lista;while (pAux != NULL && pAux->conteudo != valor)
pAux = pAux->prox;

if (pAux != NULL){
//unico elemento na lista
if (pAux->ant == NULL &&...
tracking img