Então Galera, preciso fazer o método procura, que esta no arquivo TLista.cpp, o método procura tem que pesquisar dentro da Lista pelo nome. E retornar a posição dentro da tabela hash. Postei todos os arquivos que utilizo no código. Obrigado!
#include "THash.h"
#include <iostream>
using std::ostream;
THash::THash () { // construtor
tam = 0;
alfabeto = "abcdefghijklmnopqrstuvwyz";
}
THash::THash (int t) { // construtor
tam = t;
tabelaHash = new TLista[tam];
alfabeto = "abcdefghijklmnopqrstuvwyz";
}
void THash::setTamanho(int t){
tam = t;
delete tabelaHash;
tabelaHash = new TLista[tam];
}
bool THash::insere(TPessoa a){
int i;
i = funcaoHash(a);
tabelaHash[i].insere(a);
}
int THash::getPosicao(char letra){
}
int THash::funcaoHash(TPessoa a){
string nome = a.nome;
double somatorio = 0;
int indice;
int posicaoDaLetra;
int i=0;
char l = nome[i];
while(l != ''){
posicaoDaLetra = getPosicao(l);
if(posicaoDaLetra >= 0)
somatorio = somatorio + getPosicao(nome[i]);
else
cerr << "Erro - Letra não encontrada.";
i++;
l = nome[i];
}
indice = (int) somatorio;
indice = indice % tam;
cout << "Pos:"<<indice;
return indice;
}
void THash::imprime(){
cout<<"\n******************** TABELA HASH ********************* \n";
for(int i=0; i<tam; i++){
tabelaHash[i].imprime(i);
}
cout<<"******************************************************* \n";
}
THash.h
#ifndef _THash_H__
#define _THash_H__
#include "header"
#include "TNodo.h"
#include "TLista.h"
using std::ostream;
//typedef basic_string<char> string;
class THash {
public:
THash();
THash(int t);
void setTamanho(int t);
bool insere(TPessoa a);
void imprime();
private:
int getPosicao(char letra);
int funcaoHash(TPessoa a);
string alfabeto;
int tam;
TLista * tabelaHash;
};
#endif
TLista.cpp
#include <assert.h>
#include <iostream>
using std::ostream;
using std::cout;
#include "TLista.h"
////////////////////////
// Funções públicas
////////////////////////
TLista::TLista() {
tam = 0;
head = NULL;
}
TNodoPtr TLista::n_esimo(int n) const {
TNodoPtr p=head;
int j=1;
while((j<n)&&(p->prox!=NULL)){
p=p->prox;
j++;
}
return p;
}
int TLista::posicao(TNodoPtr p) const {
assert(p); // assegura referencia valida
TNodoPtr tmp;
int i=1;
tmp=head;
while (tmp && tmp != p) {
tmp = tmp->prox;
i++;
}
if (tmp == p)
return i;
else
return 0;
}
TNodoPtr TLista::procura(TPessoa a) const {
}
bool TLista::insere(TPessoa a) {
TNodoPtr novo = new TNodo(a,NULL);
novo -> prox = head;
head = novo;
tam ++;
}
bool TLista::remove(TNodoPtr p) {
assert(p); // testa posicao de remocao valida
TNodoPtr tmp;
if (p == head) { // remove o primeiro TNodo
tmp = head;
head = head->prox;
delete(tmp);
return true;
} else {
tmp = head;
while (tmp->prox != p)
tmp = tmp->prox;
tmp->prox = p->prox;
delete(p);
return true;
}
}
unsigned int TLista::tamanho() const {
int count=0;
for (TNodoPtr p=head; p; p=p->prox)
count++;
return(count);
}
void TLista::imprime(int i) const {
cout<<endl<< "------------------------------------------------------"<<endl;
cout << "Indice "<< i <<" tem "<< tam <<" elementos"<< endl;
int j;
TNodoPtr p = head;
if(!p)
cout << "";//cout << "Lista vazia.";
else{
int i=0;
while(p){
cout << "("<< p->item.nome <<","<< p->item.rg <<","<< p->item.idade <<","<< p->item.salario<<") ";
p = p->prox;
i++;
}
}
cout<< endl <<"------------------------------------------------------"<<endl;
}
bool TLista::EstaVazia() const {
return (head == NULL);
}
TLista::~TLista() {
}
TLista.h
#ifndef _TLista_H__
#define _TLista_H__
#include "TNodo.h"
#include <iostream>
using std::ostream;
class TLista {
public:
TLista(); // construtor de TLista vazia
TNodoPtr n_esimo(int n) const; // retorna uma referencia para o n-esimo item
int posicao(TNodoPtr p) const; // retorna a posicao do item referenciado por p
TNodoPtr procura(TPessoa p) const; // retorna uma referência para o nodo tal que item == it
bool insere(TPessoa a); // insere o item it na primeira posicao
bool remove(TNodoPtr p); // remove o item referenciado por p
unsigned int tamanho() const; // número de nodos na TLista
void imprime(int i) const; // imprime os itens da TLista
bool EstaVazia() const; // retorna verdadeiro se a TLista esta vazia
~TLista(); // destrutor de TLista
private:
TNodoPtr head; // apontador para o primeiro nodo da TLista
int tam;
};
#endif
Question
Yannick Freitas
Então Galera, preciso fazer o método procura, que esta no arquivo TLista.cpp, o método procura tem que pesquisar dentro da Lista pelo nome. E retornar a posição dentro da tabela hash. Postei todos os arquivos que utilizo no código. Obrigado!
header
main.cpp THash.cpp THash.h TLista.cpp TLista.h TNodo.cpp TNodo.hLink to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.