Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struc{
- int clave;
- int cantidad_pedidos;
- } TElemAB;
- void recorrer_en_rango(TAB ab, TMOV mov, int CD, int CH, TElemAB* eab){
- TElemAB eab_aux;
- int error;
- AB_MoverCte(&ab, mov, &error);
- if(!error){
- AB_ElemCte(ab, &eab_aux);
- if(eab_aux.clave >= CD && eab_aux < CH)
- procesar(eab_aux, eab);
- if(eab_aux.clave > CD)
- recorrer_en_rango(ab, IZQ, CD, CH, eab);
- if(eab_aux.clave < CH)
- recorrer_en_rango(ab, DER, CD, CH, eab);
- }
- }
- int busqueda(TAB* pAB, int clave, TMov* mov){
- TElemAB eab;
- int error;
- if(AB_Vacio(*pAB)) return 0;
- else{
- if(eab.clave > clave) *mov = IZQ;
- else *mov = DER;
- AB_MoverCte(&pAB, mov, &error);
- }
- }
- int procesar(TElemAB e1, TElemAB* e2){
- if((e2->cantidad_pedidos) == -1 ) || (e1.cantidad_pedidos < e2->cantidad_pedidos)){
- e1->cantidad_pedidos = e1.cantidad_pedidos;
- e2->clave = e1.clave;
- }
- }
- // FUNCION PRINCIPAL
- int agregar_pedido(TAB* pAB, int CD, int CH){
- int error;
- TElemAB eab;
- TMov mov;
- recorrer_en_rango(* pAB, mov, CD, CH, &eab);
- if(eab.cantidad_pedidos == -1) return 1;
- else{
- AB_MoverCte(pAB, mov, &error);
- if(!busqueda(pAB, eab, eab.clave, &mov )) return 1;
- else{
- AB_ElemCte(*pAB, &eab);
- eab.cantidad_pedidos++;
- AB_ModifCte(pAB, &eab);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement