Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Scripts

Linux user

Publicado por Leonardo Barrozo dos Santos em 11/03/2003    [ 14979 hits ]

Login: lbsantos, 426676 pontos

   


Descrição

Este é o programa fonte de um programa de árvore binária com exibição em pré-ordem.

[ Download: arvbinpreord.c ]   [ Enviar nova versão ]

[ Esconder código-fonte ]

/*
+-----------------------------------------------------------+
| Programador: Leonardo Barrozo dos Santos                  |
| Descrição..: Programa que demonstra o funcionamente de    |
| ...........: uma árvore binária com exibição em pré-ordem.|
| Arquivo....: arvbinpreord.c                               |
+-----------------------------------------------------------+
*/

#include <stdio.h>
#include <stdlib.h>
#define MALLOC(x) ((x *) malloc (sizeof(x)))
#define TRUE 1

struct arv_bin{
  char info;
  struct arv_bin *esquerda;
  struct arv_bin *direita;
              };
typedef struct arv_bin bin_t;

void preordem(bin_t *);
void incluir (void);
void exibir_pre (void);
bin_t *raiz;
bin_t *arvore(bin_t *, bin_t *, char);

int main (void)
{
  int op;
  raiz=NULL;
  for (;;)
   {
      system ("clear");
      printf ("\nMenu");
      printf ("\n\n 1. Insere");
      printf ("\n 2. Exibe");
      printf ("\n 3. Sair");
      printf ("\n\n Entre a sua opção: ");
      scanf ("%d",&op);
      fflush(stdin);
      switch (op) {
      case 1 : incluir();
               break;
      case 2 : exibir_pre();
               break;
      case 3 : exit(0);
      default: printf ("\nOpção errada");
               break;
                  }
   }
    
}

void incluir (void)
{

char s[80];
while(TRUE)
{
    printf("\nLETRA: ");
    scanf("%s",&s);
    if (!raiz)
    {
      raiz = arvore(raiz,raiz, *s);
    }
    else
    {
      arvore(raiz,raiz,*s);
    }
    printf("\n Continua: (s,n) ");
    scanf("%s",&s);
    if(*s!='s') break;
};
}  


bin_t *arvore (bin_t *ra, bin_t *r, char info)
{
if(!r){
    r = MALLOC(bin_t);
    if (!r)
    {
      printf("Sem memória");
      exit(0);
    }

    r->esquerda = NULL;
    r->direita = NULL;
    r->info=info;

    if(!ra)
    {
      printf("\nEssa letra é a raiz");
      return r;
    }
    if(info < ra->info)
    {
    ra->esquerda=r;
    printf("\nEssa letra entrou a esqueda de %c",ra->info);
    }
    else
    {
    ra->direita = r;
    printf("\nEssa letra entrou a direita %c",ra->info);
    }
    return r;
       }
if(info < ra->info) arvore(r,r->esquerda,info);
else arvore(r,r->direita,info);            
}

void exibir_pre (void)
{
char b[80];
preordem(raiz);
printf("\n qualquer tecla sai");
scanf("%s",&b);

}

void preordem (bin_t *leo)
{

if (leo!=NULL)
{
  printf("%c",leo->info);
  preordem(leo->esquerda);
  preordem(leo->direita);
}

}

Scripts recomendados
   Script Linux recomendado Pilha Encadeada
   Script Linux recomendado Identificando Palíndromos
   Script Linux recomendado Desenhando uma curva Dragão ou o Fractal Jurassic Park
   Script Linux recomendado Lista encadeada
   Script Linux recomendado Ordenação Bolha

Comentários
[1] Comentário enviado por bogdano em 31/05/2004 - 09:46h:

Existe alguma diferença prática entre usar for (;;) e while (TRUE)?

[2] Comentário enviado por HeltonBarbosa em 07/07/2006 - 11:16h:

Muito bom. Estou começando a estudar sobre árvore binária na Faculdade e com esse código ficou mais fácil para eu entender. Valew!!!

[3] Comentário enviado por foxbls em 13/08/2009 - 09:05h:

Excelente poster estou iniciando árvore e esse poster vai me ajudar bastante!
Obrigado!!!!


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.