The error is in else
of method criarFilho
, I was able to find it, but I can not find solution for it.
Dev-C ++ debug does not say anything.
#include <stdio.h>
#include <stdlib.h>
// #include "decisor.h"
typedef struct node {
int categoria;
int atributoOuDecisao;
struct node *prox;
struct node *lista;
} No;
No *criaArvore(void){
No *inicio = (No*)malloc(sizeof(No)); //Aloca memória para filho.
inicio->atributoOuDecisao = 0;
inicio->categoria = 99;
inicio->lista = NULL; //Inicializa Variaveis
inicio->prox = NULL;
return inicio; //Retorna Raiz
}
No *criaFilho (No *pai, int atributoDoPai, int categoriaDoFilho, int atributoOuDecisao){
No *p1 = (No*)malloc(sizeof(No)); //Cria Nó Filho
p1->atributoOuDecisao = atributoOuDecisao;
p1->categoria = categoriaDoFilho;
p1->lista = NULL;
p1->prox = NULL;
if (pai->lista = NULL) { //Testa se sublista é vazia, se sim então inicializa sublista com Filho.
pai->lista = p1;
}
else { //Se pai possui sublista, percorre sublista até o fim com auxiliar e posiciona Filho na ultima posição.
No *aux;
aux = pai->lista;
while (aux->prox != NULL){
aux = aux->prox;
}
aux->prox = p1;
}
return p1; //Retorna ponteiro para nó Filho
}
int main () {
No *aux, *aux2, *arv;
int *v;
arv=criaArvore();
aux=criaFilho(arv, 1, 1, 3);
criaFilho(aux, 3, 0, 1);
return 0;
}