• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Black Tiger III

[C] - Passar para função. Apontador

1 mensagem neste tópico

Ora boas tardes.

Como tem sido costume, tenho enfrentado vários problemas. Agora o que me surge, é que no trabalho que tenho estado a fazer tenho que utilizar árvores binárias balanceadas...

Nada de mais, tirando que arranjei umas boas bibliotecas que servem perfeitamente para o que eu quero.

O problema é que durante todo o trabalho tenho utilizado árvores de um "tipo" uma maneira, e agora para poder usar a biblioteca vou ter que mudar, ou então não. Espero que me ajudem, pois acredito ser questão de meter um & ou um * em qualquer lado para resolver o problema.

Ora bem aqui vai o bloco de código.

typedef struct Node
{
   int bf;
   Mails *mail;
   struct Node *left, *right;
} AVLNode;

typedef AVLNode *tavl;

//esta foi a forma como defini a minha arvore. No entanto por distracção, em todo o trabalho tenho utilizado

AVLNode *tree;

//em vez de 

tavl *tree;

//O que sucede, é que utilizo sempre
//AVLNode *tree; e agora para a árvore balanceada tenho que usar tavl *tree;

//exemplo

void cria()
{
AVLNode *tree;
tree=(AVLNode *)malloc(sizeof(AVLNode));
acrescenta(1, tree); //sendo assim, de que modo tenho que passar este tree, para que funcione na função acrescentar...
return ;
}

void acrescenta(int valor, tavl * tree)
{...}

Nota: já agora não me peçam para mudar o codigo de AVLNode *tree para tavl *tree, porque isso iria implicar perder mtas horas, e como aposto que há outra solução...

Espero ter sido claro

:P

EDIT:

Já descobri qual era o problema. Ao inicializar a árvore, ele colocava-me lá lixo, e dps o programa não conseguia continuar a ler, por isso é que ele crashava, e não por causa da arvore.

mas para passar o argumento bastava fazer acrescentar(1,&tree), pelo menos isto funcionou :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora