Código C++:
Ver original
#include <iostream> using namespace std; struct nodo { int info, p; nodo *llink; nodo *rlink; }; #define maxcola 30 struct COLA { int fr; int fin; struct nodo *cont[maxcola]; }; bool colallena (struct COLA *cola) { bool valor; int pos; if (cola->fin==maxcola) pos = 0; else pos = cola->fin; if ((cola->fr==pos)&& (cola->fin!=0)) valor=true; else valor = false; return valor; } void insertarcola(struct COLA *cola, struct nodo *p) { if (colallena (cola) == false){ if (cola->fin==maxcola) cola->fin=1; else cola->fin=cola->fin + 1; cola->cont[cola->fin]=p; } else cout << "\nERROR: No se puede insertar en la cola, ya que esta llena"; } bool colavacia (struct COLA *cola) { bool valor; if ((cola->fr==0)&& (cola->fin==0))valor=true; else valor = false; return valor; } void limpiarcola(struct COLA *cola) { cola->fr=0; cola->fin=0; } void eliminarcola(struct COLA *cola, struct nodo **q){ if (colavacia(cola)==false){ if (cola->fr == maxcola) cola -> fr = 1; // no sé qué tiene mal esa instrucción else cola->fr=cola->fr + 1; *q=cola->cont[cola->fr]; if (cola->fr == cola->fin) limpiarcola (cola); } else cout << "\nERROR: No se puede eliminar de la cola, ya que esta vacia"; } int pedir_info(); nodo *crear_nodo(int); void insertar_nodo(nodo **, int); void recorrer(nodo *); int pedir_info() { int dato; cout<<endl<<"Ingrese el valor para el arbol: "<<endl; cin>>dato; return dato; } nodo *crear_nodo(int dato) { nodo *aux; aux->info=dato; aux->llink=NULL; aux->rlink=NULL; return aux; } void insertar_nodo(nodo **arbol, int dato) { if(*arbol != NULL) { if(dato < (*arbol)->info) insertar_nodo(&((*arbol)->llink), dato); else insertar_nodo(&((*arbol)->rlink), dato); } else *arbol=crear_nodo(dato); } void recorrer(nodo *arbol) { COLA actual; nodo *p; insertarcola(&actual, arbol); while(colavacia(&actual)==false) { eliminarcola(&actual, &p); // acá hace el llamado a la función cout<<p->info; if(p->llink!=NULL) insertarcola(&actual, p->llink); if(p->rlink!=NULL) insertarcola(&actual, p->rlink); } } int main() { nodo *arbol=NULL; int dato=0; char fin='n'; while(fin=='n') { dato=pedir_info(); insertar_nodo(&arbol, dato); cout<<endl<<"Termino de ingresar? (y/n)"<<endl; cin>>fin; } recorrer(arbol);
Muchas gracias a quien se tome el tiempo de copiarlo a un compilador y me pueda explicar!