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); }