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