Ir para conteúdo
Fórum Script Brasil
  • 0

Grafo - Struct, ponteiros e alocação dinâmica


ursolouco

Pergunta

Salve,

Estou aprendendo estrutura de dados na faculdade e elaborei o seguinte código:

#include <stdio.h>
#include <stdlib.h>

struct grafo
{
  char value;    
  struct grafo *left, *right;
};

struct grafo* novo( char value )
{
  struct grafo* temp;
  temp = (struct grafo*) malloc(sizeof(struct grafo));  
  temp->value = value;
  temp->left = NULL;
  temp->right = NULL;  
  return temp;
}

void print_grafo( struct grafo *grafo )
{
  printf("\n          Endereco do grafo: %x", &grafo);  
  printf("\n             Valor do grafo: %s", grafo->value);
  printf("\n Endereco do grafo esquerdo: %x", grafo->left );    
  printf("\n  Endereco do grafo direito: %x", grafo->right );      
}

int main(int argc, char *argv[])
{
  struct grafo grafo, *p;
  p = novo( 'a' );
  print_grafo( p );
  system("PAUSE");    
  return 0;
}

A minha dúvida é que no devc++ ele copila, mas na hora de rodar, gera um erro no windows XP, alguém saberia me dizer o porque do erro ?

abraços

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Salve,

Resolvido galera! Foi pura falta de atenção. Segue o código abaixo:

#include <stdio.h>
#include <stdlib.h>

struct grafo
{
  char value;    
  struct grafo *left, *right;
};

struct grafo* novo( char value )
{
  struct grafo* temp;
  temp = (struct grafo*) malloc(sizeof(struct grafo));  
  temp->value = value;
  temp->left = NULL;
  temp->right = NULL;  
  return temp;
}

void print_grafo( struct grafo *grafo )
{
  printf("\n          Endereco do grafo: %x", &grafo);  
  printf("\n             Valor do grafo: %c", grafo->value);
  printf("\n------------------------------------");  
  printf("\n Endereco do grafo esquerdo: %x", grafo->left );    
  printf("\n    Valor do grafo esquerdo: %c", (grafo->left)->value );    
  printf("\n------------------------------------");  
  printf("\n  Endereco do grafo direito: %x", grafo->right );      
  printf("\n     Valor do grafo direito: %c", (grafo->right)->value );      
  printf("\n------------------------------------\n");  
  
}

int main(int argc, char *argv[])
{
  struct grafo grafo, *p, *left, *right;
  p     = novo('a');  
  left  = novo('e');
  right = novo('l');
  
  p->left = left;
  p->right = right;
  
  print_grafo( p );
  system("PAUSE");    
  return 0;
}

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...