Trabalho G1 - Estrutura de dados II
Por: Teste Madrid Madrid • 11/4/2018 • Trabalho acadêmico • 3.556 Palavras (15 Páginas) • 248 Visualizações
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include<stdlib.h>
void push(struct arvore **topo, char mat[10], char nome[30]);
void cadastrar (struct arvore **lista);
void exibe_arvore(struct arvore *lista, int nivel);
void emOrdem(struct arvore *lista);
void posOrdem(struct arvore *lista);
void preOrdem(struct arvore *lista);
void remover(arvore **lista, char nome[30]);
arvore *MaiorEsquerda(arvore **lista);
struct arvore {
char mat[10];
char nome[30];
struct arvore *direita, *esquerda;
};
int main(){
struct arvore *binario = NULL;
int menu;
char mat[10];
char nome[30];
do{
printf("\n 1) Inserir um cadastro");
printf("\n 2) Exibir arvore");
printf("\n 3) Listagem em ORDEM");
printf("\n 4) Listagem em PRE-ORDEM");
printf("\n 5) Listagem em POS-ORDEM");
printf("\n 6) Remover");
printf("\n 0) Sair \n");
scanf("%i", &menu);
switch(menu) {
case(1):
system("cls");
cadastrar(&binario);
system("cls");
break;
case(2):
system("cls");
exibe_arvore(binario,0);
getch();
system("cls");
break;
case(3):
system("cls");
printf("Ordenacao em ORDEM \n");
emOrdem(binario);
getch();
system("cls");
break;
case(4):
system("cls");
printf("Ordenacao em PRE - ORDEM \n");
preOrdem(binario);
getch();
system("cls");
break;
case(5):
system("cls");
printf("Ordenacao em POS - ORDEM \n");
posOrdem(binario);
getch();
system("cls");
break;
case(6):
system("cls");
printf("\nDigite o nome: ");
scanf("%s", &nome);
remover(&binario,nome);
printf("\n%s foi exluido",nome);
getch();
system("cls");
break;
}
} while (menu !=0 && menu <= 6);
}
void push(struct arvore **topo, char mat[10], char nome[30]) {
struct arvore *p;
if ((*topo) == NULL){
(*topo) = (struct arvore *) malloc (sizeof(struct arvore));
(*topo)->esquerda = NULL;
(*topo)->direita = NULL;
strcpy((*topo)->mat , mat);
strcpy((*topo)->nome, nome);
}
else{
if(strcmp((*topo)->nome,nome)>0){
push(&(*topo)->esquerda, mat, nome);
} else {
...