void ColocaIndice(TipoLista *Lista){
	ApontadorLista aux;
	int i=1;

	if (TesteListaVazia(*Lista)){
		return;
	}

	aux = Lista->Primeiro->Prox;
	while (aux != NULL){
		aux->Indice=i;
		aux = aux->Prox;
		i++;
	}
}
void ImprimeLista(TipoLista Lista){
    Apontador aux;
    int p=0;
    if(TesteListaVazia(Lista) == 1){
        printf("\n\n Erro: Vazia!\n\n");
        return;
    }
    aux=Lista.primeiro->prox;
    while(aux != NULL){
        printf("\n%d \tCodigo do produto: %d\n",p ,aux->item.cod);
        printf("\tNome do produto: %s\n",aux->item.nome);
        printf("\tValor:R$ %.2f\n", aux->item.valor);
        printf("\tFabricante: %s\n",aux->item.fabri);
        printf("\tEm estoque: %d\n",aux->item.quantidade);
        p++;
        aux=aux->prox;
    }
}
void RetiraL(int w, TipoLista *Lista, TipoItem *item){
    Apontador q,Aux;
    Aux = Lista->primeiro;
    q = Aux->prox;
    if(TesteListaVazia(*Lista)==1){
        printf("Erro: Lista vazia ou posicao nao existe \n");
        return;
    }
    while(q != NULL){
        if(q->item.cod==w){
            *item = q->item;
            Aux->prox=q->prox;
            if(Aux->prox==NULL){
                Lista->ultimo=Aux;
            }
            free(q);
            return;
        }
        q=q->prox;
        Aux = Aux->prox;
    }
}
int Verificar(int z, TipoLista Lista){
    Apontador Aux;
    int i=0;
    Aux=Lista.primeiro->prox;
    if(TesteListaVazia(Lista)==1){
        printf("Erro:Lista vazia!\n");
        system("pause");
        return(0);
    }
    while(Aux!=NULL){
        if(Aux->item.cod==z){
            printf("\n\tNumero encontrado\n");
            printf("Posicao: %d\n\n",i);
            system("pause");
            return(1);
        }
        Aux=Aux->prox;
        i++;
    }
    printf("\n\tNumero nao encontrado\n");
    system("pause");
    return(0);
}
//=========================FUNÇÃO PRINCIPAL===================================
int main(){

    system("title Controle De Estoque 2011");
    system("color 0f");

    int op,z,d,i,k;
    char resp,c;

    TipoItem item;
    TipoLista Lista;
    ApontadorNo Arvore_cod;

    IniciarLista(&Lista);
    Inicializa(&Arvore_cod);

    i=0;

    do{
        menu();
		scanf("%d",&op);
		system("cls");
		 if(op==1){
            do{
                printf("\t\tGERENCIAMENTO DE ESTOQUE\n\n\tINCLUSAO DE NOVO CADASTRO\n\n");
                fflush(stdin);
                printf("Digite o codigo do produto: ");
                scanf("%d",&item.cod);
                printf("\nDigite o nome do produto: ");
                fflush(stdin);
                gets(&item.nome[i]);
                printf("\nDigite o valor: ");
                fflush(stdin);
                scanf("%f",&item.valor);
                printf("\nDigite o fabricante: ");
                fflush(stdin);
                gets(&item.fabri[i]);
                printf("\nDigite a quantidade: ");
                fflush(stdin);
                scanf("%d",&item.quantidade);
                InserirCelula(&Lista,item);
                printf("\n\tDeseja digita novamente? (S/N).:");
                fflush(stdin);
                Insere(item,&Arvore_cod);
                scanf("%c",&resp);
                system("cls");
            }while(resp=='s');
            system("cls");
        }

        if(op==2){
            printf("\t\t\tESTOQUE\n");
            ImprimeLista(Lista);
            system("pause");
            system("cls");
        }

        if(op==3){
            if(TesteListaVazia(Lista)){
                ImprimeLista(Lista);
                system("pause");
                system("cls");
            }
            else{
                ImprimeLista(Lista);
                do{
                    printf("\n\tQual deseja remover.:");
                    scanf("%d",&k);
                    if(Verificar(k,Lista)==1){
                        fflush(stdin);
                        RetiraL(k,&Lista,&item);
                        fflush(stdin);
                        Retira(item, &Arvore_cod);
                        fflush(stdin);
                        printf("\n\tDeseja Remover novamente? (S/N).:");
                        fflush(stdin);
                        scanf("%c",&resp);
                    }
                }while(resp=='s');
                system("pause");
                system("cls");
            }
        }
        if(op==4){
            if(TesteListaVazia(Lista)){
                ImprimeLista(Lista);
                system("pause");
                system("cls");
            }
            else{
                printf("\t\tOrdenado por valor\n");
                d=Tamanho(Lista);
                QuickSortLista(&Lista,d);
                ImprimeLista(Lista);
                system("pause");
                system("cls");
            }
        }

        if(op==5){
            if(TesteListaVazia(Lista)){
                ImprimeLista(Lista);
                system("pause");
                system("cls");
            }
            else{
                printf("\n\n\n Digite o codigo que deseja encontrar: ");
                scanf("%d", &item.cod);
                fflush(stdin);
                Pesquisa(&item, &Arvore_cod, item.quantidade);
                printf("\n");
                system("pause");
            }
            system("cls");

        }

        if(op==6){

        }

        if(op==7){

        }

        if(op==8){

        }

        if(op==9){

        }

        if(op<1||op>10){
            system("color 4f");
            printf("\tOpcao Invalida\n");
            system("pause");
            system("cls");
            system("color 0f");
        }

         else if(op==10){
            exit(1);
        }

    }while(op>0||op<10);
}