All pastes #989894 Raw Edit

pilasCTM

public c v1 · immutable
#989894 ·published 2008-04-19 20:32 UTC
rendered paste body
#include <stdlib.h>#include <stdio.h>const int MaxPila=10;// El Turbo C++ es un maldito bisexual, acepta sentencias tanto en c como en c++// y las compila juntas (wtf), aqui elimine la sentencia "enum boolean..." por que// en C++ ya hay una palabra reservada "bool" que define un tipo de dato booleano :Penum {Nulo=-1};typedef int Posicion;typedef int TipoDato;struct Pila{    Posicion Tope;    struct Dato{        TipoDato d;        Dato *next;    };};struct Nodo{    Posicion Tope;    struct Dato{        TipoDato d;        Dato *next;    };};void CrearPila(Pila &P){    P.Tope=Nulo;}bool PilaVacia(Pila P){	bool Resultado=false;	if (P.Tope==Nulo){	    Resultado=true;	}	return (Resultado);}bool PilaLlena(Pila P){	bool Resultado=false;	if (P.Tope+1==MaxPila){		Resultado=true;	}	return(Resultado);}TipoDato Tope(Pila P){	TipoDato e;	e=P.Dato[P.Tope];	return (e);}bool Apilar(Pila &P, TipoDato e){	bool Resultado=false;	if (PilaLlena(P)==false){		Resultado=true;		P.Tope++;		P.Dato[P.Tope]=e;	}	return (Resultado);}bool Desapilar(Pila &P){	bool Resultado=false;	if (PilaVacia(P)==false){		Resultado=true;		P.Tope--;	}	return(Resultado);}void Ingresar_Dato(TipoDato &Nodo){	TipoDato Valor;	system("clear");	printf("\nIngrese en valor del nodo:");	scanf("%i",&Valor);	Nodo=Valor;}void Imprimir_Nodo(TipoDato &Nodo){	printf("\nValor Tope: ");	printf("%i",Nodo);}int main(){	Pila P;	TipoDato e;	char opcion;	bool resultado=false;	CrearPila(P);	do {        system("clear");		printf("Ponte las Pilas 1.1b\n");		printf(" 1.- Crear Pila\n");		printf(" 2.- Verificar si la Pila esta Vacia\n");		printf(" 3.- Verificar si la Pila esta Llena\n");		printf(" 4.- Desapilar un elemento\n");		printf(" 5.- Apilar un elemento\n");		printf(" 6.- Elemento Tope\n");		printf(" 0.- Salir\n");		printf("Ingrese Opcion:");		opcion=getchar();		switch (opcion){			case '1':			    CrearPila(P);				printf("\nPila creada o inicializada\n");				getchar();			break;			case '2':				resultado=PilaVacia(P);				if (resultado==true){			        printf("\nLa Pila se encuentra VACIA\n");				}				else{					printf("\nLa Pila NO se encuentra VACIA\n");				}				getchar();			break;			case '3':				resultado=PilaLlena(P);				if (resultado==true){					printf("\nLa Pila se encuentra LLENA\n");				}				else{					printf("\nLa Pila NO se encuentra LLENA\n");				}				getchar();			break;			case '4':				resultado=Desapilar(P);				if (resultado==true){					printf("\nSe ha desapilado un elemento correctamente\n");				}				else{					printf("\nNO se ha podido Desapilar un elemento\n");				}				getchar();			break;			case '5':				Ingresar_Dato(e);				resultado=Apilar(P,e);				if (resultado==true){					printf("\nSe ha podido APILAR el nodo CORRECTAMENTE\n");				}				else{					printf("\nNO se ha podido apilar el nodo\n");				}				getchar();			break;			case '6':				resultado=PilaVacia(P);				if (resultado==false){					e=Tope(P);					Imprimir_Nodo(e);				}				else{					printf("La pila se encuentra VACIA, NO se puede mostrar TOPE\n");				}				getchar();			    break;			case '0':			    break;			default:			    break;		}	} while(opcion!='0');	return 0;}