Boa Tarde a todos,
não encontro o erro desse programa,
na hora de cadastrar ele trava, após a inserção do ultimo dado do cadastro.
Objetivo: Criação de Hashtable implementada por Lista Ligada com opção busca na hashtable
#include<iostream>
#include<math.h>
using namespace std;
typedef struct produto
{
int codigo;
char descricao[20];
int quantidade;
int fornecedor;
float precoCusto;
float precoVenda;
} Produto;
typedef struct lista
{
Produto *ponteiro;
lista *proximo;
} Lista;
struct lista inserirProdutoNaLista(Produto *p1, Lista *l1)
{
Lista *auxLista;
*auxLista = *l1;
cout<<p1->codigo;
if(auxLista == NULL)
{
auxLista->ponteiro = p1;
auxLista->proximo = NULL;
}
else
{
auxLista->ponteiro = p1;
*(auxLista->proximo) = *l1;
}
*l1 = *auxLista;
return *l1;
}
void busca(Lista l1, int codigo)
{
Lista *auxLista;
*auxLista = l1;
Produto *auxProduto;
*auxProduto = *(auxLista->ponteiro);
while (auxLista != NULL && auxProduto->codigo != codigo)
{
*auxLista = *(auxLista->proximo);
*auxProduto = *(auxLista->ponteiro);
if(auxLista == NULL)
{
cout<<"Elemento não encontrado!\n";
}
else
{
if(auxProduto->codigo == codigo)
{
cout<< auxProduto->codigo << "\t" << auxProduto->descricao << "\t" << auxProduto->quantidade << "\t" << auxProduto->fornecedor << "\t" << auxProduto->precoCusto << "\t" << auxProduto->precoVenda;
cout<<"\n";
}
}
}
}
int main()
{
Lista *l1 = new Lista [7];
l1 = NULL;
Produto *auxProduto = new Produto;
Lista *auxLista;
int hash,opcao,codigo;
do
{
//Limpando a tela
system("cls");
//Imprimindo o menu
printf("Escolha um opcao: \n");
printf(" 1 - Inserir um produto.\n");
printf(" 2 - Buscar um produto pelo codigo.\n");
printf(" 3 - Sair do Programa.\n");
//usuario escolhe a opcao
printf("\nOpcao: ");
scanf("%d", &opcao);
//verifica a opcao selecionada
switch(opcao)
{
case 1:
cout<< "\nDigite o codigo do produto: ";
cin>>auxProduto->codigo;
cout<< "Digite o descricao do produto: ";
cin>>auxProduto->descricao;
cout<< "Digite o quantidade de produtos: ";
cin>>auxProduto->quantidade;
cout<< "Digite o fornecedor do produto: ";
cin>>auxProduto->fornecedor;
cout<< "Digite o preço de custo do produto: ";
cin>>auxProduto->precoCusto;
cout<< "Digite o preço de venda do produto: ";
cin>>auxProduto->precoVenda;
hash = auxProduto->codigo % 7;
*auxLista = l1[hash];
l1[hash] = inserirProdutoNaLista(auxProduto,auxLista);
break;
case 2:
cout<<"Digite o codigo que deseja procurar: ";
cin>>codigo;
hash = codigo % 7;
*auxLista = l1[hash];
busca(*auxLista,codigo);
break;
case 3:
printf("\nFim do programa!!!\n");
break;
default:
printf("\nOpcao invalida!\n");
}
cin.sync();
cin.get();
} while (opcao != 3);
}