Funciones del codigo;
1.-Insertar Elementos a una pila
2.-Mostrar la Pila
3.-Concatenar dos pilas
4.-Invertir la pila
5.-Eliminar un valor especifico de la pila
#include stdio.h #include stdlib.h #include string.h #include ctype.h typedef struct{ int tope; int elemnto[10]; }struct_pila; int pop(struct_pila *p); void push(struct_pila *p,int); void mostrar(struct_pila p); void invertir(struct_pila p,struct_pila *pinv); void concatenar(struct_pila *p,struct_pila *paux,struct_pila *pcon); void ocurrencias(struct_pila *p,struct_pila *paux); int pilaaux(struct_pila *paux); void posicion(struct_pila p); int main(){ int q,g,e; int opc; struct_pila p; struct_pila pinv; struct_pila paux; struct_pila pcon; pinv.tope=-1; p.tope=-1; pcon.tope=-1; paux.tope=-1; while(q!=2){ system("cls"); printf("Practica pila \n"); printf("1.- Insertar elementos en la pila \n"); printf("2.- Sacar un elemento de la pila \n"); printf("3.- Mostrar la pila \n"); printf("4.- Profuncidad de la pila \n"); printf("5.- Invertir la pila\n"); printf("6.- Concatenar 2 pilas\n"); printf("7.- Eliminar ocurrencias \n"); printf("9.- Salir \n"); printf("Indica la opcion: "); scanf("%d", &opc); switch(opc) { case 1:system("cls"); printf("Ingresa el numero que deseas meter a la pila: "); scanf("%d",&e); push(&p,e); break; case 2:system("cls"); pop(&p); break; case 3:system("cls"); mostrar(p); break; case 4:system("cls"); posicion(p); break; case 5:system("cls"); invertir(p,&pinv); break; case 6:system("cls"); pilaaux(&paux); concatenar(&p,&paux,&pcon); break; case 7:system("cls"); ocurrencias(&p,&paux); break; case 9:return 0; break; default : printf("Opcion no valida\n" ); break; } printf("\n¿Desea hacer otro movimiento?\n"); printf("1.-si\n"); printf("2.-no\n\n"); printf("Opcion:"); scanf("%d",&q); } } int pop(struct_pila *p){ int f=-1,val; if(p->tope==f){ printf("La pila esta Vacia\n"); } val=p->elemnto[p->tope]; p->tope--; return val; } void push(struct_pila *p,int e){ if(p->tope<10){ p->tope++; p->elemnto[p->tope]=e; printf("\n el numero %d se ingreso con exito\n",e); } else{ printf("\nNo queda espacio en la pila \n"); } } void invertir(struct_pila p,struct_pila *pinv){ int l,i,f=-1; int c; l=p.tope; i=p.tope; pinv->tope=-1; while(i!=f){ pinv->tope++; pinv->elemnto[pinv->tope]=p.elemnto[i]; i--; } c=pinv->tope; printf("PILA INVERTIDA:\n\n"); printf("_______________________________________________________________\n\n"); while(c!=f){ printf(" <-- %d |",pinv->elemnto[c]); c--; } printf("\n_______________________________________________________________\n\n"); printf("Pila Original:\n"); mostrar(p); } void mostrar(struct_pila p){ int i,g; int f=-1; g=p.tope+1; if (p.tope==f) printf("La pila esta vacia.\n\n"); else { printf("En la pila se encuentrar:\n\n"); printf("%d/10 Elementos \n",g); printf("_______________________________________________________________\n\n"); while (p.tope!=f) { printf(" <-- %d |",p.elemnto[p.tope]); p.tope--; } } printf("\n_______________________________________________________________\n\n"); } void posicion(struct_pila p){ int i; int n; n=10; int f=-1; if (p.tope==f) printf("La pila esta vacia.\n\n"); else { i=p.tope; i=i+1; n=n-i; printf("El numero de elementos actuales en la pila es: %d \n",i); printf("Aun puede agregar :%d elementos a la pila \n",n); } } int pilaaux(struct_pila *paux){ int w,t; printf("Ingreso de la pila 2\n"); printf("¿Cuantos elementos contendra la segunda pila?:\n"); printf("(No deben ser mas de 10 elemntos):\n"); scanf("%d",&w); w=w-1; while(paux->tope!=w){ paux->tope++; printf("Ingresa Elemento:"); scanf("%d",&t); paux->elemnto[paux->tope]=t; } printf("La pila fue ingresada con exito\n"); } void concatenar(struct_pila *p,struct_pila *paux,struct_pila *pcon){ int i,r,r2,f=-1,rf; r=p->tope; i=0; r2=paux->tope; rf=r+r2; while(r!=f){ pcon->tope++; pcon->elemnto[pcon->tope]=p->elemnto[i]; r--; i++; } i=0; while(r2!=f){ pcon->tope++; pcon->elemnto[pcon->tope]=paux->elemnto[i]; r2--; i++; } printf("\n_______________________________________________________________\n\n"); while(rf!=f){ printf(" <-- %d |",pcon->elemnto[rf]); rf--; } printf("\n_______________________________________________________________\n\n"); } void ocurrencias(struct_pila *p,struct_pila *paux){ int i,d,f=-1,y; printf("Ingrese el numero que desea eliminar por completo de la pila: "); scanf("%d",&d); paux->tope=-1; while(p->tope!=f){ paux->tope++; paux->elemnto[paux->tope]=p->elemnto[p->tope]; p->tope--; } while(paux->tope!=f){ p->tope++; y=paux->elemnto[paux->tope]; p->elemnto[p->tope]=paux->elemnto[paux->tope]; paux->tope--; if(y==d){ p->tope=p->tope-1; } } }
0 comentarios:
Publicar un comentario