main() { Pila dada,top,aux; int g=0; inicpila(&dada); inicpila(&top); inicpila(&aux); while (g<5) { leer(&dada); g++; } apilar(&top, desapilar(&dada)); while (!pilavacia(&dada)) { apilar(&aux, desapilar(&dada)); } apilar(&dada, desapilar(&top)); while (!pilavacia(&aux)) { apilar(&dada, desapilar(&aux)); } mostrar(&dada); getch(); return(0); }
char* convertirDec(int num,int base) { const char valNum[]={"0123456789ABCDEF"}; char* cfinal,*aux; int contdigitos=0; t_info resparcial; t_pila pila; crearPila(&pila); if(num==0) { cfinal=(char*)malloc(sizeof(char)); *cfinal='0'; return cfinal; } while(num!=0) { resparcial.num=valNum[num%base]; num=num/base; if(!apilar(&pila,&resparcial)) return NULL; contdigitos++; } cfinal=(char*)malloc(sizeof(char)*(contdigitos+1)); //+1 por el \0 if(!cfinal) return NULL; aux=cfinal; while(desapilar(&pila,&resparcial)) { *aux=resparcial.num; aux++; } *aux='\0'; return cfinal; }
int main(int argc, char** argv){ Pila p1, p2; int i; p1=crear();//creamos las pilas p2=crear(); if(esta_vacia(p1) == true)//comprobamos que estabn vacias printf("La pila p1 esta vacia\n"); if(esta_vacia(p2) == true) printf("La pila p2 esta vacia\n"); for(i=0;i<20;i++){ //metemos numeros en la pila if(i%2==0) apilar(p1,i); else apilar(p2,i); } printf("Los elementos de la pila p1 son: \n\t"); while(!esta_vacia(p1)) //mientras no este vacia printf("%d ", desapilar(p1));//vamos sacando los numeros y mostandolos puts(""); vaciar(p1);//la vaciamos printf("Los elementos de la pila p2 son: \n \t"); while(!esta_vacia(p2)) printf("%d ",desapilar(p2)); destruir(p1);//eliminamos la pila destruir(p2); getche(); return (EXIT_SUCCESS); }
/* programa principal */ int main (void){ /* Carga la pila hasta que se llene o ingrese un cero */ printf("ingrese un número distinto a 0: "); scanf("%d",&dato); while(dato!=0 && !pilallena()){ apilar(); printf("ingrese un número distinto a 0: "); scanf("%d",&dato); } /* Muestra la pila, perdiendo todos los */ /* elementos que estaban cargados en ella */ printf("Datos cargados en la pila\n"); while(!pilavacia()) { printf("%d\n", primeropila()); desapilar(); } printf("Fin de datos\n"); return 0; }
//**********MAIN**********// void main() { FILE* pf; t_cola cola; t_pila pila; t_lista lista; t_pedido ped; t_producto prod; int cont=1; abrirArchivo(&pf,"r+b"); mostrarArchivo(pf); crearCola(&cola); crearPila(&pila); crearLista(&lista); printf("\nACOLAR\n"); printf("\nIngrese numero de cliente: "); scanf("%d",&ped.nCliente); while(ped.nCliente!=0) { printf("Ingrese codigo de producto: "); scanf("%d",&ped.cod); printf("Ingrese cantidad pedida: "); scanf("%d",&ped.cant); acolar(&cola,&ped); printf("\nIngrese numero de cliente: "); scanf("%d",&ped.nCliente); } while(desacolar(&cola,&ped)) { printf("\nCliente: %d\nProducto: %d\nCantidad: %d unidades\n",ped.nCliente,ped.cod,ped.cant); fseek(pf,0,0); fread(&prod,sizeof(t_producto),1,pf); while(!feof(pf)) { if(ped.cod==prod.codPr) { if((prod.cantStock-ped.cant)>=prod.minStock) { printf("\nPedido del cliente %d.Fue realizado exitosamente.\n",ped.nCliente); prod.cantStock-=ped.cant; fseek(pf,-sizeof(t_producto),1); fwrite(&prod,sizeof(t_producto),1,pf); fseek(pf,0,1); } else { if((prod.cantStock-ped.cant)>=0) { printf("\nPedido del cliente %d.Fue realizado, stock por debajo del minimo necesario.\n",ped.nCliente); prod.cantStock-=ped.cant; fseek(pf,-sizeof(t_producto),1); fwrite(&prod,sizeof(t_producto),1,pf); fseek(pf,0,1); apilar(&pila,&prod); } else { printf("\nPedido del cliente %d.No tenemos el suficiente stock para afrontar la venta.\n",ped.nCliente); ponerEnLista(&lista,&ped); } } } fread(&prod,sizeof(t_producto),1,pf); } } printf("\nARCHIVO ACTUALIZADO\n"); fseek(pf,0,0); mostrarArchivo(pf); fclose(pf); }
//***************MAIN***************// void main() { FILE* pf; t_dato dato; t_pila pila; int opc,cantReg,i; printf("\n**********MENU DE OPCIONES**********\n\ 1- Crear pila\n\ 2- Apilar\n\ 3- Desapilar\n\ 4- Pila vacia?\n\ 5- Pila llena?\n\ 6- Vaciar pila\n\ 7- Ver tope de pila\n\ 0- SALIR\n\n\ INGRESE EL NUMERO DE OPCION: "); scanf("%d",&opc); while(opc && opc!=0) { switch(opc) { case 1: crearPila(&pila); printf("\nSe ha creado la pila"); break; case 2: while(pila.tope!=TAM) { cargarDato(&dato); if(apilar(&pila,&dato)) printf("\nSe apilo el dato ingresado"); } printf("\nSE LLENO LA PILA"); break; case 3: if(desapilar(&pila,&dato)) { printf("Se desapilo el dato "); puts(dato.nom); } else printf("No se pudo desapilar el dato"); break; case 4: if(pilaVacia(&pila)) printf("La pila esta vacia"); else printf("La pila NO esta vacia"); break; case 5: if(pilaLlena(&pila)) printf("La pila esta llena"); else printf("Todavia hay lugar en la pila"); break; case 6: vaciarPila(&pila); printf("Se vacio la pila"); break; case 7: if(verTope(&pila,&dato)) { printf("El tope de pila es "); puts(dato.nom); } else printf("La pila esta vacia"); break; } printf("\n\n**********MENU DE OPCIONES**********\n\ 1- Crear pila\n\ 2- Apilar\n\ 3- Desapilar\n\ 4- Pila vacia?\n\ 5- Pila llena?\n\ 6- Vaciar pila\n\ 7- Ver tope de pila\n\ 0- SALIR\n\n\ INGRESE EL NUMERO DE OPCION: "); scanf("%d",&opc); } }