- //implementacion de pilas
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>
struct nodo_pila
{
int dato;
nodo_pila *sgte;
};
typedef nodo_pila *nodo;
nodo ReservarMemoria();
nodo CrearNodo(int elem);
nodo Apilar(nodo Pila,int elem);
nodo Vaciar(nodo Pila);
nodo Liberar(nodo Pila);
void imprimirpila(nodo Pila);
void imprimir(nodo Pila);
int longitud(nodo Pila);
Menu(int num);
void main()
{ nodo pila=NULL;
int opcion,num=0;
int elem;
do{
opcion=Menu(num);
switch(opcion)
{
case 1:clrscr();
printf("Ingrese elemento a Insertar ");
scanf("%d",&elem);
pila=Apilar(pila,elem);
break;
case 2:clrscr();
imprimirpila(pila);
getch();
break;
case 3:clrscr(); imprimir(pila);
getch();
break;
case 4:clrscr();
cout<<"Longitud de la Pila es:_"<<longitud(pila);
getch();
break;
case 5:clrscr();
pila=Liberar(pila);
break;
case 6:clrscr();
pila=Vaciar(pila);
break;
case 7: clrscr();
break;
}
}while(opcion!=7);
}
Menu(int num)
{
clrscr();
gotoxy(20,5);
printf("________________PILAS___________________\n\
|•| [1] Apilar Pila |•|\n\
|•| [2] Mostrar Cima |•|\n\
|•| [3] Mostrar Pila |•|\n\
|•| [4] Longitud Pila |•|\n\
|•| [5] Desapilar y Liberar Memoria |•|\n\
|•| [6] Vaciar Pila |•|\n\
|•| [7] Fin |•|\n\
|•|________________________________________|•|\n\n");
printf("Ingrese opcion: _");
scanf("%d",&num);
clrscr();
return num;
}
nodo ReservarMemoria()
{
nodo nuevo;
nuevo=(nodo)malloc (sizeof(struct nodo_pila));
return (nuevo);
}
nodo CrearNodo(int elem,nodo enlace)
{
nodo nuevo;
nuevo=(nodo)malloc(sizeof(struct nodo_pila));
nuevo->dato=elem;
nuevo->sgte=enlace;
return nuevo;
}
nodo Apilar(nodo Pila, int elem)
{ nodo nuevo;
nuevo=CrearNodo(elem,NULL);
nuevo->sgte=Pila;
Pila=nuevo;
return(Pila);
}
void imprimir(nodo Pila){
if(Pila!=NULL)
{ while(Pila!=NULL)
{ printf("\n |__%d__|",Pila->dato);
Pila=Pila->sgte;
}
printf("\n");
}
else
printf("Pila vacia");
}
void imprimirpila(nodo Pila){
if(Pila!=NULL)
printf(" %d\n",Pila->dato);
else
printf("Pila vacia");
}
int longitud(nodo Pila){
int i;
if(Pila==NULL)
return 0;
else {
i=1;
while(Pila->sgte!=NULL)
{
i++;
Pila=Pila->sgte;
}
return i;
}
}
nodo Liberar(nodo Pila)
{ nodo aux;
aux=Pila;
if(Pila==NULL)
printf("La Lista esta vacia");
else{
Pila=Pila->sgte;
free(aux);
}
return(Pila);
}
nodo Vaciar(nodo Pila)
{
nodo aux;
aux=Pila;
while (aux!=NULL)
{
Pila=Pila->sgte;
free (aux);
aux=Pila;
}
return (aux);
}
/*int Parentesis(char *cadena)
{
nodo Pila;
Pila=NULL;
int j=0;
int i=0;
while(*cadena)
{
if(*cadena=='(')
i=i+1;
Apilar(Pila,'(') ;
if(*cadena==')')
j=j+1;
if(Pila!=NULL)
Desapilar(Pila) ;
else
return 0;
cadena++;
}
if(i==j)
return 1;
else
Vaciar(Pila);
return 0 ;
}
int Desapilar(nodo Pila)
{ nodo aux;
int valor;
valor=Pila->dato;
aux=Pila;
Pila=Pila->sgte;
delete(aux) ;
return valor;
}
pilas
PILAS EN C++
Suscribirse a:
Entradas (Atom)
No hay comentarios:
Publicar un comentario