carlossilva Postado Abril 15, 2010 Denunciar Share Postado Abril 15, 2010 (editado) Amigos sou novato no forúm, já procurei algums exemplos aqui no forum porém não tive muito sucesso.a pergunta éAtividade 3Escreva um programa que leia várias informações de Alunos para uma lista encadeada. Emseguida crie uma árvore binária de busca a partir da lista. O programa deve permitir que sefaça consultas às informações da lista a partir da busca realizada na árvore.tentei usar este código como base porém não está correto, alguém pode me ajudar? obrigado pela atenção, Abraço#include<stdio.h> #include<conio.h> struct node { int data; struct node *left; struct node *right; }; void binsearchtree(struct node **,int); void delatgivendata(struct node **,int); inorder(struct node *); preorder(struct node *); postorder(struct node *); void main() { int data,choice; struct node *p; p=NULL; clrscr(); while(1) { printf("\n1.Add node to the binary search tree"); printf("\n2.Deletion at given data:"); printf("\n3.Exit"); printf("\nEnter the choice"); scanf("%d",&choice); switch(choice) { case 1: printf("\nEnter the data"); scanf("\n%d",&data); binsearchtree(&p,data); printf("\n The inorder traversals are:"); printf("\n"); inorder(p); printf("\n The preorder traversals are:"); printf("\n"); preorder(p); printf("\nThe post order traversals are:"); printf("\n"); postorder(p); break; case 2: printf("\n Please enter the data where you want deleted"); scanf("%d",&data); delatgivendata(&p); printf("\nThe inorder traversals are :"); inorder(p); break; case 3:exit(0); } } } void binsearchtree(struct node **q,int data) { struct node *temp,*r; r=*q; temp=(struct node*)malloc(sizeof(struct node)); temp->data=data; temp->left=NULL; temp->right=NULL; if(r==NULL) { *q=temp; (*q)->left=temp->left; (*q)->right=temp->right; } else { if(r->data==data) printf("\nInvalid input\n"); while(1) { if(r->data>data) { if(r->left==NULL) { r->left=temp; break; } r=r->left; } else { if(r->right==NULL) { r->right=temp; break; } r=r->right; } } } } void delatgivendata(struct node **q,int data) { struct node *r; r=*q; } inorder(struct node *q) { struct node *r; r=q; if(r==NULL) return 0; else { inorder(r->left); printf("%d\t",r->data); inorder(r->right); } } preorder(struct node *q) { struct node *r; r=q; if(r==NULL) return 0; else { printf("%d\t",r->data); preorder(r->left); preorder(r->right); } } postorder(struct node *q) { struct node *r; r=q; if(r==NULL) return 0; else { postorder(r->left); postorder(r->right); printf("%d\t",r->data); } } Editado Abril 15, 2010 por Durub Adicionar tags code [Durub] Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 p4t0X Postado Abril 15, 2010 Denunciar Share Postado Abril 15, 2010 Bom dia!Vou dar uma olhada aqui!Mas o que exatamente não está correto?! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 carlossilva Postado Abril 15, 2010 Autor Denunciar Share Postado Abril 15, 2010 o meu professor disse que está certo, só que não é exatamente o que a questão quer. você tem algum exemplo de arvore binaria de busca com lista encadeada?valeu pela força.agora, será que está certo?struct avl { struct avl *esq; struct avl *dir; char info; }; typedef struct avl Arvore; void incluir(void); void consulta(void); int buscaBinaria(Arvore *p,char z); Arvore *criar(char c,Arvore *esq,Arvore *dir); Arvore *raiz; Arvore *arvore; Arvore *criar (char c,Arvore *esq,Arvore *dir) { Arvore *p; p=(Arvore*)malloc(sizeof(Arvore)); p->info=c; p->esq=esq; p->dir=dir; return p; } void incluir (void) { int resp=1; char s[30]; int codigo[10]; int nota1,nota2; float media; while (resp==1) { printf("Escreva o nome do aluno.: "); scanf("%s", &s); printf("\nDigite o codigo do aluno.: "); scanf("%d", &codigo); printf("\nDigite a nota 1 do aluno.: "); scanf("%d", ¬a1); printf("\nDigite a nota 2 do aluno.: "); scanf("%d", ¬a2); media=nota1+nota2/2; } if (media>7) { printf("Aluno aprovado"); } else { printf("Aluno reprovado"); } int main(int argc, char *argv[]) { int op; raiz=NULL; for (;;) { system ("cls"); printf("\n\n 1.Insere Aluno"); printf("\n\n 2.consulta Aluno"); printf("\n\n 3.Busca Aluno"); system("PAUSE"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 p4t0X Postado Abril 16, 2010 Denunciar Share Postado Abril 16, 2010 (editado) Ahh, agora acho que entendi o enunciado...Primeiro você pega todos os dados e coloca numa lista encadeada.Depois da lista completa você cria uma árvore binária.As pesquisas são feitas na árvore binária.Em qual parte você está com dúvidas?PS: Cuidado com o termo AVL, AVL é um tipo de árvore binária, que por sinal o primeiro post NÃO implementou. Editado Abril 16, 2010 por p4t0X Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 carlossilva Postado Abril 16, 2010 Autor Denunciar Share Postado Abril 16, 2010 correto amigo, o primeiro está errado, o segundo é que não sei.to com a corda no pescoço preciso acertar essa questão para poder passar.:(valeu pela força Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 p4t0X Postado Abril 17, 2010 Denunciar Share Postado Abril 17, 2010 Então, o primeiro passo é criar a lista encadeada...Normalmente ela é desse tipo:struct noLista { int valor; struct noLista *proximo; }; Criamos uma refêrencia para a lista assim: struct noLista *lista = NULL; Para adicionar um elemento ficaria mais ou menos assim: struct noLista *aux; aux = lista; //Percorre a lista até o ultimo elemento while( aux->proximo != NULL ){ aux = aux->proximo; } struct noLista *novoElemento = (struct noLista*) malloc( sizeof( struct noLista ) ); novoElemento->valor = 1231; novoElemento->proximo = NULL;//Isso indica que esse vai ser o ultimo elemento da lista //Adiciona o elemento na lista aux->proximo = novoElemento;A partir da lista criada, criamos a árvore binária.Tente implementar a lista e posta aí! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
carlossilva
Amigos sou novato no forúm, já procurei algums exemplos aqui no forum porém não tive muito sucesso.
a pergunta é
Atividade 3
Escreva um programa que leia várias informações de Alunos para uma lista encadeada. Em
seguida crie uma árvore binária de busca a partir da lista. O programa deve permitir que se
faça consultas às informações da lista a partir da busca realizada na árvore.
tentei usar este código como base porém não está correto, alguém pode me ajudar? obrigado pela atenção,
Abraço
Editado por DurubAdicionar tags code [Durub]
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.