Sei sulla pagina 1di 19

1)Se tiene un mapa de carretera para ir de un cout<<"PUEBLOS A RECORRER: { int j= strlen(palabra2);

sitio a otro, el conductor maneja desde un ";cin>>palabra2; cout<<"IR AL PUNTO FINAL :"<<endl;
pueblo de origen a otro de destino, cout<<endl; for(int i=0;i <j;i++)
pasando por otros pueblos. Muestre el camino j= strlen(palabra2); { cout<<palabra2[i]<<" ";
con destino de origen a destino. for(int i=0;i <j;i++) }
{ push(p,palabra2[i]);
#include<iostream.h> } }
#include<conio.h> imprime_ida();
#include<string.h> cout<<endl; ****************************************
imprime_regreso(p); ************************
struct nodo getch();
{ char palabra; } 3) Multiplique todos los elementos de una pila
struct nodo *sgte; por un valor, solo debe utilizar push y poop.Los
}; void push(Pila &p,char valor) elementos de la pila resultante
typedef nodo *Pila; { Pila q=new(struct nodo); deberan estar en el orden original.
void push(Pila &,char); q->palabra=valor;
void imprime_regreso(Pila &); q->sgte=p;
void imprime_ida(); p=q;
Pila p=NULL; } #include<iostream.h>
char palabra2[20]; void imprime_regreso(Pila &p) #include<string.h>
{ cout<<"REGRESO AL PUNTO INICIAL #include<conio.h>
void main() :"<<endl; #define lim 50
{ clrscr(); while(p!=NULL)
int band=1,j; { cout<<p->palabra<<" "; struct nodo {int nro;
cout<<"pueblos en la ruta de p=p->sgte; struct nodo *sig; };
carreteras"<<endl; } typedef struct nodo *Pila;
cout<<"A B C D E F G H I J K L M N O P Q cout<<endl; void imprimirpila(Pila);
"<<endl; } void push(Pila &,int );
int pop(Pila &);
void imprime_ida()
void main() typedef nodo *ptrPila;
{ int pop(Pila &p)
Pila p=NULL; {int valor=p->nro; void imprimir(ptrPila);
int n; Pila q=p; void eliminaPila(ptrPila &);
int k,y; p=p->sig; void push(ptrPila &, int);
int i; delete(q); int pop(ptrPila &);
int v[lim]; return valor;
cout<<"\n\tINGRESE UN VALOR PARA } void main(void)
MULTIPLICAR:";cin>>k; { ptrPila p=NULL;
cout<<"\n\tINGRESE EL LIMITE DE LA void imprimirpila(Pila p) int opc,n;
PILA:";cin>>n; { do{
for(i=0;i<n;i++) while(p!=NULL) cout<<"1 Apilar"<<endl;
{ { cout<<"2 Desapilar"<<endl;
cout<<"\n\telemento: ["<<i<<"] cout<<p->nro<<endl; cout<<"3 Ver pila"<<endl;
:";cin>>v[i]; p=p->sig; cout<<"4 Eliminar Pila"<<endl;
y=k*v[i]; } cout<<"5 Salir"<<endl;
push(p,y); cout<<endl; cout<<"Ingrese una opcin";
} } cin>>opc;
cout<<"\n\tLA PILA MULTIPLICADO POR switch(opc)
UN VALOR ES: "<<endl; **************************************** {case 1:cout<<"Apilar Valor"; cin>>n;
imprimirpila(p); *********************** push(p,n);
getch(); break;
}
//cuerpo de la funcion// #include<iostream.h> case 2:if(p!=NULL)
void push(Pila &p,int n) #include<conio.h> { cout<<"Valor
{Pila q=new(struct nodo); Eliminado";
q->nro=n; // Definicin de la estructura n=pop(p);
q->sig=p; struct nodo{ int nro; cout<<n<<endl;
p=q; struct nodo * sgte;}; }
}
else cout<<"Pila //Funcin para eliminar la pila void imprimir(ptrPila);
vacia"<<endl; void eliminaPila(ptrPila &p) void eliminaPila(ptrPila &);
break; { ptrPila q; void push(ptrPila &, int);
case 3:cout<<"Contenido de la while(p!=NULL) int pop(ptrPila &);
pila"<<endl; {q=p; void main(void)
imprimir(p); p=p->sgte; { ptrPila p=NULL;
break; delete(q); int opc,n,i,valor;
case 4:eliminaPila(p); } do{
cout<<"Pila } cout<<"1 Apilar"<<endl;
destruida"<<endl; //Funcin para visualizar elementos en la pila cout<<"2 Desapilar"<<endl;
break; void imprimir(ptrPila p) cout<<"3 Ver pila"<<endl;
} { while(p!=NULL) cout<<"4 Eliminar Pila"<<endl;
}while(opc!=5); {cout<<p->nro<<endl; cout<<"5 Salir"<<endl;
} p=p->sgte; cout<<"Ingrese una opcin";
} cin>>opc;
//Funcin para insertar elementos en la pila cout<<endl; switch(opc)
void push(ptrPila &p, int n) } {case 1:cout<<"cantidad de elementos";
{ ptrPila q=new(struct nodo); cin>>n;
q->nro=n; for(i=0;i<n;i++)
q->sgte=p; **************************************** { cout<<"ingresar los elementos:";cin>>valor;
p=q; ****************************** push(p,valor);
} //multiplicar el elemento ingresado por 2 y luego } break;
//Funcin para eliminar elementos en la pila mostrar los elementos de la pila multiplicados.
int pop(ptrPila &p) case 2:if(p!=NULL)
{ int n=p->nro; #include<iostream.h> { cout<<"Valor
ptrPila q=p; #include<conio.h> Eliminado";
p=p->sgte; // Definicin de la estructura n=pop(p);
delete (q); struct nodo{ int nro; cout<<n<<endl;
return n; struct nodo * sgte;}; }
} typedef nodo *ptrPila;
else cout<<"Pila void eliminaPila(ptrPila &p) #include<conio.h>
vacia"<<endl; { ptrPila q; #include<string.h>
break; while(p!=NULL)
case 3:cout<<"Contenido de la {q=p; struct nodo
pila"<<endl; p=p->sgte; {char c[15];
imprimir(p); delete(q); struct nodo *sgt;
break; } };
case 4:eliminaPila(p); }
cout<<"Pila //Funcin para visualizar elementos en la pila typedef struct nodo *lista;
destruida"<<endl; void imprimir(ptrPila p)
break; { while(p!=NULL) void push(lista &,char[15]);
} {cout<<p->nro<<endl; void imprimir(lista, int);
}while(opc!=5); p=p->sgte;
} } void push(lista &p, char n[15])
//Funcin para insertar elementos en la pila cout<<endl; {lista q=new(struct nodo);
void push(ptrPila &p, int n) } strcpy(q->c,n);
{ ptrPila q=new(struct nodo); q->sgt=p;
q->nro=n; **************************************** p=q;
q->sgte=p; **************************************** }
p=q; ****************************************
} void imprimir(lista p, int n)
//Funcin para eliminar elementos en la pila programe que tenga una pila de ciudades,luego {int c=0;
int pop(ptrPila &p) ingrese una ciudad destino y muestra while(p!=NULL && c<n+1)
{ int n=p->nro; una lista de ciudades que se pasaron para llegar {cout<<p->c<<endl;
ptrPila q=p; a la ciudad de destino.muestre la p=p->sgt;
p=p->sgte; primera ciudad. c++;
delete (q); }
return n; cout<<endl;
} }
//Funcin para eliminar la pila #include<iostream.h>
void main() cout<<"Ingrese opcion:";cin>>n; void encola(struct cola &, int);
{lista p=NULL; clrscr(); void verCola(struct cola);
int n,op; if(n>0 &&n<7) void vaciaCola(struct cola &);
push(p,"Lima"); { int desencola(struct cola &);
push(p,"Cerro-de-Pa,sco"); imprimir(p,n);
push(p,"Huanuco"); getch(); struct nodo{
push(p,"Tingo-Maria"); }} while(n!=7); int nro;
push(p,"Aguaytia"); break; struct nodo * sgte;
push(p,"San-Alejandro"); } };
push(p,"Pucallpa"); case 2:{ cout<<"Primera ciudad:"<<endl;
imprimir(p,n=0); struct cola{
getch(); struct nodo * delante;// apunta al
do{clrscr(); break;} primero
cout<<"Pila de ciudades:"<<endl; } struct nodo * atras;// apunta al ultimo
cout<<"inserte ciudad de destino [1]:"<<endl; }while(op!=3); };
cout<<"Muestre Primera ciudad [2]:"<<endl; }
cout<<"Salir [3]:"<<endl; void DividirCola(cola q,cola &cola1,cola &cola2)
cout<<"inserte opcion:";cin>>op; **************************************** {
switch(op) ****************************** nodo *p=q.delante;
int cont,i;
{ COLAS for(cont=0;p!=NULL;cont++)
case 1:{do{clrscr(); {
cout<<"opciones:"<<endl; **************************************** p=p->sgte;
cout<<"san-alejandro...............[1]:"<<endl; *********************************** }
cout<<"aguaytia....................[2]:"<<endl; p=q.delante;
cout<<"tingo-maria.................[3]:"<<endl; cont=cont/2;
cout<<"huanuco.....................[4]:"<<endl; DIVIDIR for(i=0;p!=NULL;i++,p=p->sgte)
cout<<"cerro-de-pasco..............[5]:"<<endl; #include<iostream.h> {
cout<<"lima........................[6]:"<<endl; #include<conio.h> if(i<cont)
cout<<"Regresa al Menu.............[7]:"<<endl; void inicializa(struct cola &); {
encola(cola1,p->nro); cout<<"----------------------------------"<<endl; break;
} cout<<"Ingrese Opcion = "; }
else cin>>opc; clrscr();
{ switch(opc) }while(opc!=5);
encola(cola2,p->nro); { }
} case 1: cout<<"Ingresar Elementos:";
} cin>>n; //funciones---------------------------
} encola(q,n); void inicializa(struct cola &q)
break; {q.delante=NULL;//apunta al primer elemento
case 2: if(q.delante!=NULL) q.atras=NULL; //apunta al ultimo elemento
void main(void) {n=desencola(q); }
{
int opc; cout<<endl<<"Desencola //INGRESA ELEMENTOS EN LA COLA
struct cola q,cola1,cola2; elementos"<<n<<endl;} void encola(struct cola &q, int n)
int n; else {
inicializa(q); cout<<endl<<"No hay struct nodo *p;
inicializa(cola1); elementos en la cola"<<endl; p=new (struct nodo);
inicializa(cola2); break; p->nro=n;
do{ case 3: p->sgte=NULL;
cout<<endl<<"--------------MENU---------------- DividirCola(q,cola1,cola2); if(q.delante==NULL)
"<<endl; cout<<endl<<"Elementos de la q.delante=p; //ingresa el primer
cout<<"|[1] Ingresa Elementos cola:"<<endl; elemento
|"<<endl; verCola(q); else
cout<<"|[2] Retirar Elementos cout<<"ELEMENTOS DE LA COLA 1\n"; (q.atras)->sgte=p;// si no apunta a un
|"<<endl; verCola(cola1); nuevo nodo
cout<<"|[3] Dividir y Visualiza cola cout<<"ELEMENTOS DE LA COLA 2\n"; q.atras=p;// la cola apunta al ultimo elemento
|"<<endl; verCola(cola2); recientemente ingresado
cout<<"|[4] Vaciar Cola getch(); }
|"<<endl; break;
cout<<"|[5] Salir |"<<endl; case 4: vaciaCola(q);
//ELIMINA ELEMENTOS EN LA COLA void verCola(struct cola q) struct nodo * sgte;
{ };
int desencola(struct cola &q) struct nodo *p;
{ p=q.delante;// apunta al primer elementos struct cola{
struct nodo *p; while(p!=NULL) struct nodo * delante;
p=q.delante;// apunta al primer elemento { struct nodo * atras;
int n=p->nro; cout<<p->nro<<endl; };
q.delante=(q.delante)->sgte; p=p->sgte;
delete(p); } void main(void)
return n; {char a[20];
} } int opc,l;
struct cola q;
int n,c,sum=0;
**************************************** inicializa(q);
//BORRA LOS DATOS DE LA COLA ***************************
void vaciaCola(struct cola &q) do{clrscr();
{ cout<<endl<<"******MENU********"<<endl;
struct nodo *p,*r; //cola con numero y costo y que sume todos los cout<<"[1] Ingresa Elementos"<<endl;
p=q.delante;// apunta al primer elemento costos de la cola cout<<"[2] Visualiza cola"<<endl;
while(p!=NULL) cout<<"[3] Elemento Mayor"<<endl;
{ #include<iostream.h> cout<<"[4] Salir"<<endl;
r=p; #include<conio.h> cout<<"Ingrese Opcion";
p=p->sgte; void inicializa(struct cola &); cin>>opc;
delete(r); void encola(struct cola &,char[20],int,int); switch(opc)
} void verCola(struct cola); {
q.delante=NULL; void verColaMayor(struct cola) case 1:
q.atras=NULL; struct nodo{ {cout<<"INGRESE EL LIMITE DE
char nombre[20]; ELEMENTOS :";cin>>l;
} int nro; for(int i=0;i<l;i++)
int costo; {cout<<"Ingresar nombre:";cin>>a;
cout<<"Ingresar numero:";cin>>n; struct nodo *p;
cout<<"Ingrese costo:";cin>>c; void encola(struct cola &q,char x[20], int n,int p=q.delante;
sum=sum+c; n2) x=p->costo;
encola(q,a,n,c); { while(p!=NULL)
} struct nodo *p; {
}break; p=new (struct nodo); if(p->costo>x)
strcpy(p->nombre,x); x=p->costo;
case 2: cout<<endl<<"Elementos de la p->nro=n;
cola:"<<endl; p->costo=n2; p=p->sgte;
verCola(q); p->sgte=NULL;
cout<<endl<<"la suma total del costo if(q.delante==NULL) }
es:"<<sum<<endl; q.delante=p; cout<<"la mayor edad es :"<<x<<endl;
getch(); else }
break; (q.atras)->sgte=p;
q.atras=p; ****************************************
case 3: cout<<endl<<"Elemento mayor de la } ****************************************
cola:"<<endl; *
verColaMayor(q); void verCola(struct cola q)
getch(); { 3)Se tiene una cola de hombre y mujeres con sus
break; struct nodo *p; nombres, se debe dividir la
} p=q.delante; colar en dos resultantes, una para hombres y
}while(opc!=4); while(p!=NULL) otra para mujeres.
} {
//funciones--------------------------- cout<<p->nro<<" "<<p->costo<<endl;
p=p->sgte; #include<iostream.h>
void inicializa(struct cola &q) } #include<conio.h>
{q.delante=NULL; }
q.atras=NULL;
} void verColaMayor(struct cola q) struct nodo{char sexo;
{int x;
char cout<<"==================="<<endl; struct nodo{
nombre[20]; cout<<"***Cola Original***"<<endl; char nombre[20];
struct nodo*sgte;}; verCola(q); char sexo;
while(q.delante!=NULL) struct nodo*sgte;
struct cola{struct nodo*delante;//apunta a {cte=desencola(q); };
primero if(cte.sexo=='M'||cte.sexo=='m') struct cola{
struct nodo*atras; //apunta a ultimo encola(qH,cte); struct nodo*delante;
}; else encola(qM,cte); struct nodo*atras;
void inicializa(struct cola&); } };
void encola(struct cola&,struct nodo); cout<<"====================="<<endl;
struct nodo(desencola(struct cola&)); cout<<"***Cola de Hombres***"<<endl; void inicializa(struct cola &);
void verCola(struct cola); verCola(qH); void encola(struct cola &, struct nodo);
cout<<"====================="<<endl; struct nodo desencola(struct cola &);
void main() cout<<"***Cola de mujeres***"<<endl; void ver(struct cola &);
{ verCola(qM);
int n,i; getch(); void main()
struct nodo cte;//es la cola } {int n,i;
struct cola q; struct nodo cte;
struct cola qH; struct cola q;
struct cola qM; **************************************** struct cola qH;
inicializa(q); ************************************** struct cola qM;
inicializa(qH); inicializa(q);
inicializa(qM); //3.- se tiene una cola de homabres y mujeres inicializa(qH);
con sus nombre, se deve dividir inicializa(qM);
cout<<"Nro de Cliente: ";cin>>n; la cola en dos resultantes, una para hombres y cout<<"Numero de clientes:";
for(i=0;i<n;i++) otra para mujeres. cin>>n;
{cout<<"Nombre: ";cin>>cte.nombre; for(i=0;i<n;i++)
cout<<"sexo M/F: ";cin>>cte.sexo; #include<iostream.h> {cout<<"Nombre:";
encola(q,cte); #include<conio.h> cin>>cte.nombre;
} cout<<"Sexo M/F:";
cin>>cte.sexo; q.delante=p; ****************************************
encola(q,cte); else ********************
} (q.atras)->sgte=p;
cout<<"cola original:"<<endl; q.atras=p; #include<iostream.h>
ver(q); } #include<conio.h>
while(q.delante!=NULL) #include<string.h>
{cte=desencola(q); struct nodo desencola(struct cola & q) #define lim 20
if(cte.sexo=='M'||cte.sexo=='m') {struct nodo*p; void inicializa(struct cola &);
encola(qH,cte); p=q.delante; void encola(struct cola &,char[lim],int,int);
else struct nodo cte=*p; void verCola(struct cola);
encola(qM,cte); q.delante=(q.delante)->sgte; int desencola(struct cola &);
} delete(p);
cout<<"cola de hombres"<<endl; return cte; struct nodo{
ver(qH); } char nombre[lim];
cout<<"cola de mujeres"<<endl; int sexo;
ver(qM); int ed;
getch(); void ver(struct cola & q) struct nodo * sgte;
} {struct nodo*p; };
p=q.delante; struct cola{
void inicializa(struct cola & q) while(p!=NULL) struct nodo * delante;// apunta al primero
{q.delante=NULL; {cout<<p->nombre<<"\t"<<p->sexo<<endl; struct nodo * atras;// apunta al ultimo
q.atras=NULL; p=p->sgte; };
} } void main(void)
} {
void encola(struct cola & q, struct nodo cte) int opc,l,ed;
{struct nodo*p; struct cola q,p,r;
p=new(struct nodo); int n2,n;
*p=cte; char a[20];
p->sgte=NULL; inicializa(q);
if(q.delante==NULL) inicializa(p);
inicializa(r); else if(q.delante==NULL)
do{clrscr(); cout<<endl<<"No hay elementos en la q.delante=p; //ingresa el primer elemento
cout<<endl<<"******MENU********"<<endl; cola"<<endl;getch(); else
cout<<"[1] Ingresa Elementos"<<endl; break; (q.atras)->sgte=p;// si no apunta a un nuevo
cout<<"[2] Retirar Elementos"<<endl; case 3: cout<<endl<<"masculinos:"<<endl; nodo
cout<<"[3] Visualiza cola"<<endl; verCola(q); q.atras=p;// la cola apunta al ultimo elemento
cout<<"[4] Salir"<<endl; cout<<endl<<"femenino:"<<endl; recientemente ingresado
cout<<"Ingrese Opcion"; verCola(p); }
cin>>opc; cout<<endl<<"lista completa:"<<endl; //ELIMINA ELEMENTOS EN LA COLA
switch(opc) verCola(r); int desencola(struct cola &q)
{ getch(); {
case 1: break; struct nodo *p;
{cout<<"INGRESE EL LIMITE DE } p=q.delante;// apunta al primer elemento
ELEMENTOS :";cin>>l; }while(opc!=4); char n[20];
for(int i=0;i<l;i++) } strcpy(n,p->nombre);
{cout<<"Ingresar nombre:";cin>>a; //funciones--------------------------- q.delante=(q.delante)->sgte;
cout<<"Ingresar edad:";cin>>ed; void inicializa(struct cola &q) delete(p);
cout<<"Ingrese sexo(m=1,f=2):";cin>>n2; {q.delante=NULL;//apunta al primer elemento return 0;
if(n2==1) q.atras=NULL; //apunta al ultimo elemento }
{encola(q,a,n2,ed); }
encola(r,a,n2,ed);} //INGRESA ELEMENTOS EN LA COLA
if(n2==2) void encola(struct cola &q, char n[20],int n2,int //BORRA LOS DATOS DE LA COLA
{encola(p,a,n2,ed); ed1)
encola(r,a,n2,ed);}} { void verCola(struct cola q)
struct nodo *p; {int x;
} p=new (struct nodo); struct nodo *p;
break; strcpy(p->nombre,n); p=q.delante;// apunta al primer elementos
case 2: if(q.delante!=NULL) p->sexo=n2; x=p->ed;
{n=desencola(q); p->ed=ed1; while(p!=NULL)
cout<<endl<<"Desencola elementos"<<n<<endl;} p->sgte=NULL; {
cout<<p->nombre<<endl; struct nodo * atras;// apunta al ultimo struct cola q,cola1,cola2;
if(p->ed>x) }; int n;
x=p->ed; inicializa(q);
p=p->sgte; void DividirCola(cola q,cola &cola1,cola &cola2) inicializa(cola1);
{ inicializa(cola2);
} nodo *p=q.delante; do{
cout<<"la mayor edad es :"<<x<<endl; int cont,i; cout<<endl<<"******MENU********"<
} for(cont=0;p!=NULL;cont++) <endl;
{ cout<<"[1] Ingresa Elementos"<<endl;
p=p->sgte; cout<<"[2] Retirar Elementos"<<endl;
} cout<<"[3] Dividir y Visualiza
**************************************** p=q.delante; cola"<<endl;
************************************** cont=cont/2; cout<<"[4] Vaciar Cola"<<endl;
for(i=0;p!=NULL;i++,p=p->sgte) cout<<"[5] Salir"<<endl;
#include<iostream.h> { cout<<"Ingrese Opcion";
#include<conio> if(i<cont) cin>>opc;
void inicializa(struct cola &); { switch(opc)
void encola(struct cola &, int); encola(cola1,p->nro); {
void verCola(struct cola); } case 1: cout<<"Ingresar Elementos:";
void vaciaCola(struct cola &); else cin>>n;
int desencola(struct cola &); { encola(q,n);
encola(cola2,p->nro); break;
struct nodo{ } case 2: if(q.delante!=NULL)
int nro; } {n=desencola(q);
struct nodo * sgte; }
}; cout<<endl<<"Desencola
elementos"<<n<<endl;}
struct cola{ void main(void) else
struct nodo * delante;// apunta al { cout<<endl<<"No hay
primero int opc; elementos en la cola"<<endl;
break; p->nro=n; struct nodo *p,*r;
case 3: p->sgte=NULL; p=q.delante;// apunta al primer elemento
DividirCola(q,cola1,cola2); if(q.delante==NULL) while(p!=NULL)
cout<<endl<<"Elementos de la q.delante=p; //ingresa el primer {
cola:"<<endl; elemento r=p;
verCola(q); else p=p->sgte;
cout<<"ELEMENTOS DE LA COLA 1\n"; (q.atras)->sgte=p;// si no apunta a un delete(r);
verCola(cola1); nuevo nodo }
cout<<"ELEMENTOS DE LA COLA 2\n"; q.atras=p;// la cola apunta al ultimo elemento q.delante=NULL;
verCola(cola2); recientemente ingresado q.atras=NULL;
getch(); }
break; }
case 4: vaciaCola(q);
break; //ELIMINA ELEMENTOS EN LA COLA void verCola(struct cola q)
} {
clrscr(); int desencola(struct cola &q) struct nodo *p;
}while(opc!=5); { p=q.delante;// apunta al primer elementos
} struct nodo *p; while(p!=NULL)
p=q.delante;// apunta al primer elemento {
//funciones--------------------------- int n=p->nro; cout<<p->nro<<endl;
void inicializa(struct cola &q) q.delante=(q.delante)->sgte; p=p->sgte;
{q.delante=NULL;//apunta al primer elemento delete(p); }
q.atras=NULL; //apunta al ultimo elemento return n;
} } }

//INGRESA ELEMENTOS EN LA COLA ****************************************


void encola(struct cola &q, int n) *********************
{ //BORRA LOS DATOS DE LA COLA #include<iostream.h>
struct nodo *p; void vaciaCola(struct cola &q) void inicializa(struct cola &);
p=new (struct nodo); { void encola(struct cola &, int);
void verCola(struct cola); { p=new (struct nodo);
void vaciaCola(struct cola &); case 1: cout<<"Ingresar Elementos:"; p->nro=n;
int desencola(struct cola &); cin>>n; p->sgte=NULL;
struct nodo{ encola(q,n); if(q.delante==NULL)
int nro; break; q.delante=p; //ingresa el primer elemento
struct nodo * sgte; case 2: if(q.delante!=NULL) else
}; {n=desencola(q); (q.atras)->sgte=p;// si no apunta a un nuevo
struct cola{ cout<<endl<<"Desencola elementos"<<n<<endl;} nodo
struct nodo * delante;// apunta al primero else q.atras=p;// la cola apunta al ultimo elemento
struct nodo * atras;// apunta al ultimo cout<<endl<<"No hay elementos en la recientemente ingresado
}; cola"<<endl; }
void main(void) break; //ELIMINA ELEMENTOS EN LA COLA
{ case 3: cout<<endl<<"Elementos de la int desencola(struct cola &q)
int opc; cola:"<<endl; {
struct cola q; verCola(q); struct nodo *p;
int n; break; p=q.delante;// apunta al primer elemento
inicializa(q); case 4: vaciaCola(q); int n=p->nro;
do{ break; q.delante=(q.delante)->sgte;
cout<<endl<<"*********** MENU } delete(p);
************"<<endl; }while(opc!=5); return n;
cout<<"|[1] Ingresa Elementos |"<<endl; } }
cout<<"|[2] Retirar Elementos |"<<endl; //funciones--------------------------- //BORRA LOS DATOS DE LA COLA
cout<<"|[3] Visualiza cola |"<<endl; void inicializa(struct cola &q) void vaciaCola(struct cola &q)
cout<<"|[4] Vaciar Cola |"<<endl; {q.delante=NULL;//apunta al primer elemento {
cout<<"|[5] Salir |"<<endl; q.atras=NULL; //apunta al ultimo elemento struct nodo *p,*r;
cout<<"*****************************"<<e } p=q.delante;// apunta al primer elemento
ndl; //INGRESA ELEMENTOS EN LA COLA while(p!=NULL)
cout<<"Ingrese Opcion:"; void encola(struct cola &q, int n) {
cin>>opc; { r=p;
switch(opc) struct nodo *p; p=p->sgte;
delete(r); struct nodo* der; cout<<" | 4 - En Orden |"<<endl;
} }; cout<<" +--------------------------+"<<endl;
q.delante=NULL; cout<<" +--------------------------+"<<endl;
q.atras=NULL; typedef struct nodo* ABB; cout<<" | 5 - Visualizar Arbol |"<<endl;
} cout<<" +--------------------------+"<<endl;
void verCola(struct cola q) void inserta(ABB&,int); cout<<" +--------BUSQUEDAS---------+"<<endl;
{ void preorden(ABB); cout<<" | 6 - Buscar Elemento |"<<endl;
struct nodo *p; void postorden(ABB); cout<<" | 7 - Buscar Mayor |"<<endl;
p=q.delante;// apunta al primer elementos void enorden(ABB); cout<<" | 8 - Buscar Menor |"<<endl;
while(p!=NULL) void verArbol(ABB,int); cout<<" +--------------------------+"<<endl;
{ bool Buscar(ABB,int); cout<<" +-----------CORTES---------+"<<endl;
cout<<p->nro<<endl; int BuscarMayor(ABB); cout<<" | 9 - Podar |"<<endl;
p=p->sgte; int BuscarMenor(ABB); cout<<" | 10- Talar(Elim. Arbol) |"<<endl;
} void Podar(ABB&,int); cout<<" +--------------------------+"<<endl;
} cout<<" | 0 - SALIR |"<<endl;
void main(void) cout<<" +--------------------------+"<<endl;
**************************************** { cout<<" |Ingrese su Opcion: ";cin>>opcion;
*********************** ABB arbol=NULL; cout<<" +--------------------------+"<<endl<<endl;
int n,x,opcion;
ARBOLES do switch(opcion)
{ {
**************************************** //----------MEN PRINCIPAL----------------------- case 1:
************************ cout<<" +--------------------------+"<<endl; {
cout<<" | MENU PRINCIPAL |"<<endl; cout<<"Ingrese cantidad de elemtos del
#include<iostream.h> cout<<" +--------------------------+"<<endl; arbol: ";
#include<conio.h> cout<<" | 1 - Ingresar Elementos |"<<endl; cin>>n;
struct nodo cout<<" +--------------------------+"<<endl; for(int i=0;i<n; i++)
{ cout<<" +--------RECORRIDOS--------+"<<endl; {
int valor; cout<<" | 2 - Preorden |"<<endl; cout<<"Ingrese
struct nodo* izq; cout<<" | 3 - Postorden |"<<endl; nodo numero "<<i<<": ";
cin>>x; } getch();
inserta(arbol,x); getch(); break;
} break; }
getch(); } case 6:
break; case 4: {
} { int elem;
case 2: if(arbol!=NULL) if(arbol!=NULL)
{ { {
if(arbol!=NULL) cout<<endl<<"En Orden : "; cout<<" -->Ingrese Elemento a buscar: ";
{ enorden(arbol); cin>>elem;
cout<<endl<<"Preorden : "; }
preorden(arbol); else if (Buscar(arbol, elem))
} { cout<<" --> "<<elem<<"
else cout<<" -->El arbol no tiene Elementos"; Encontrado ......";
{ } else
cout<<" -->El arbol no tiene Elementos"; getch(); cout<<" --> "<<elem<<" NO
} break; Encontrado ......";
getch(); } }
break; case 5: else
} { {
case 3: cout<<" VISUALIZACION DEL ARBOL cout<<" -->El arbol no tiene Elementos";
{ "<<endl<<endl; }
if(arbol!=NULL) if(arbol!=NULL) getch();
{ { break;
cout<<endl<<"Postorden : "; verArbol(arbol,0); }
postorden(arbol); } case 7:
} else {
else { if(arbol!=NULL)
{ cout<<" -->El arbol no tiene Elementos"; {
cout<<" -->El arbol no tiene Elementos"; }
cout<<" -->El Mayor Elemento es: cin>>corte; cout<<" -->El arbol no tiene Elementos";
"<<BuscarMayor(arbol); if (Buscar(arbol, corte)) }
} { getch();
else if (arbol->valor == corte) break;
{ arbol = NULL; }
cout<<" -->El arbol no tiene Elementos"; else }
} Podar(arbol, corte); clrscr();
getch(); cout<<" El Arbol fue podado con
break; exito......"; }while(opcion!=0);
} } }
case 8: else
{ cout<<" El Elemento noesta en el
if(arbol!=NULL) arbol....."; void inserta(ABB& arbol,int x)
{ } {
cout<<" -->El Mayor Elemento es: else if(arbol==NULL)
"<<BuscarMenor(arbol); { {
} cout<<" -->El arbol no tiene Elementos"; arbol=new(struct nodo);
else } arbol->valor=x;
{ getch(); arbol->izq=NULL;
cout<<" -->El arbol no tiene Elementos"; break; arbol->der=NULL;
} } }
getch(); case 10: else
break; { {
} if(arbol!=NULL) if(x<arbol->valor) inserta(arbol-
case 9: { >izq,x);
{ arbol=NULL; else
int corte; cout<<" El Arbol fue Talado con exito......"; if(x>arbol->valor) inserta(arbol-
if(arbol!=NULL) } >der,x);
{ else }
cout<<" -->Ingrese Elemento de Corte: "; { }//SI ES IGUAL NO SE INSERTA ---
{
void preorden(ABB arbol) void verArbol(ABB arbol,int nro) int menor;
{ { while(arbol->izq!=NULL)
if(arbol!=NULL) int i; arbol=arbol->izq;
{ if(arbol==NULL)return; menor=arbol->valor;
cout<<arbol->valor<<" "; verArbol(arbol->der,nro+1); return menor;
preorden(arbol->izq); for(i=0;i<nro;i++) }
preorden(arbol->der); cout<<" ";
} cout<<arbol->valor<<endl; int BuscarMayor(ABB arbol)
} verArbol(arbol->izq,nro+1); {
} int mayor;
void enorden(ABB arbol) while(arbol->der!=NULL)
{ bool Buscar(ABB arbol, int buscado) arbol=arbol->der;
if(arbol!=NULL) { mayor=arbol->valor;
{ ABB A1; return mayor;
enorden(arbol->izq); A1=arbol; }
cout<<arbol->valor<<" "; while (A1 != NULL)
enorden(arbol->der); { void Podar(ABB& A1, int corte)
} if (buscado < A1->valor ) {
} A1 = A1->izq; while (A1 != NULL)
else {
void postorden(ABB arbol) if (buscado > A1->valor) if (corte < A1->valor)
{ A1 = A1->der; if(A1->izq->valor == corte)
if(arbol!=NULL) else {
{ return true; A1->izq=NULL;
postorden(arbol->izq); } break;
postorden(arbol->der); return false; }
cout<<arbol->valor<<" "; } else
} A1 = A1->izq;
} int BuscarMenor(ABB arbol) else
if (A1->der->valor == corte)
{
A1->der=NULL;
break;
}
else
A1 = A1->der;
}
}

Potrebbero piacerti anche