Mostrando entradas con la etiqueta arboles ABB. Mostrar todas las entradas
Mostrando entradas con la etiqueta arboles ABB. Mostrar todas las entradas

lunes, 15 de julio de 2013

Agenda Electronica con Arboles ABB en C++

Esta vez les traigo una agenda electronica implemetando arboles ABB, las funciones de la agenda son: agregar un nuevo contacto, buscar, eliminar, mostrar todos los contactos y mostrar el numero de contactos dentro de la agenda.

 Capturas:




Codigo:

Agenda.cpp


#include 
#include 
#include "agenda.h"
using namespace std;

int main()
{
  arbol A;
  Tarbol b;
  char nombre[30];
  char telefono[10];
  char direccion[30];
  char Email[40];
  int op;
  A.insertar(A.miarbol,"m"," 1"," 1"," 1");
  cout<>op;
	  switch(op)
	  {
	  case 1:
		  {fflush(stdin); system("cls");
			  //agregar
			
			cout<nombre<telefono<Email<direccion<nombre)<0){
			 insertar(aux->Izdo,nom,tel,dir,e); 
			}else if(strcmpi(nom,aux->nombre)>0 ){
			insertar(aux->Dcho,nom,tel,dir,e);}
	
	    }

}
Tarbol arbol::buscar(Tarbol aux,char nom[30])
{  
	if (aux==NULL){  
		return NULL;}
	else {if (strcmpi(nom,aux->nombre)==0){
				return aux;}
	else {	if (strcmpi(nom,aux->nombre)<0){
				return buscar(aux->Izdo, nom);}
			else{ return buscar(aux->Dcho, nom);}}
		}
}

void arbol::borrar( Tarbol &aux,char nom[30])
{
	if (aux==NULL){
		cout<<"contacto no encontrado no encontrado !!";}
	else {if (strcmpi(nom,aux->nombre)<0){
	           borrar(aux->Izdo, nom);}
	      else {if (strcmpi(nom,aux->nombre)>0){
				borrar(aux->Dcho,nom);}
				else{ Tarbol temp=aux;
				if (aux->Izdo== NULL){
					aux = aux->Dcho;
					}else {if (aux->Dcho == NULL){
								aux = aux->Izdo;}
							else {reemplazar(temp,temp->Izdo);}
						
					delete  temp;
					}
				}
		  }
	}
}
void arbol::reemplazar(Tarbol &temp, Tarbol &aux)
{ 
	if(aux->Dcho!=NULL){
		reemplazar(temp,aux->Dcho);}
	else{
		strcpy(temp->nombre,aux->nombre);
		strcpy(temp->telefono,aux->telefono);
		strcpy(temp->Email,aux->Email);
		strcpy(temp->direccion,aux->direccion);
		
	    temp=aux;
		aux=temp->Izdo;
	}
}



void arbol::Inorden( Tarbol aux){//muestra de la A-Z
if(aux!=NULL){
 Inorden(aux->Izdo); //recorre el subárbol Izquierdo
 if(strcmpi(aux->nombre,"m")!=0){
	 cout<<"--NOMBRE: "<< aux->nombre<<" "<telefono<<" "<Email<<" "<direccion<<" "<Dcho); //recorre el subárbol Derecho
}

}


int arbol::Peso( Tarbol aux)//muestra el numero de contactos
{
   	if(aux!=NULL){
		p++; 
		Peso(aux->Izdo); //recorre el subárbol Izquierdo
		Peso(aux->Dcho);
		return  p;
	}else {
		return -1;}

}




Agenda.h

#include


class nodo{
public:
	char nombre[30];
	char telefono[10];
	char direccion[30];
	char Email[40];
	nodo *Izdo, *Dcho;

	nodo(char nom[30],char tel[10],char dir[30],char e[40], nodo *Iz=NULL, nodo *Dr=NULL){
	strcpy(nombre,nom);
	strcpy(telefono,tel);
	strcpy(direccion,dir);
	strcpy(Email,e);
	Izdo=Iz;
	Dcho=Dr;	
	}
 class arbol;
};
typedef nodo *Tarbol; 
class arbol{
public: 
      Tarbol miarbol;	  
    	int p;
		int a;
			arbol(){
			miarbol=NULL;
			p=0;
			a=0;
	  		  }
void insertar(Tarbol &aux,char nom[30],char tel[10],char dir[30],char e[40]);
Tarbol buscar(Tarbol aux,char nom[30]);
void borrar(Tarbol &aux,char nom[30]);
void reemplazar(Tarbol &temp, Tarbol &aux);


void Inorden(Tarbol aux);


int arbol::Peso(Tarbol aux);


};


descarga todo el proyecto desde aqui.