Pila C
#include<stdlib.h>
/*Definicion de Tipo */
typedef char Elem;
typedef struct Nodo
{ Elem info;
struct Nodo *sig;
} *Pila ;
/* Prototipos de Pila */Pila empty ();
Pila push(Elem e, Pila p);
int isempty(Pila p);
Elem top(Pila p);
Pila pop(Pila p);
/* Prototipos para Imprimir */
void impElem(Elem e);
void impPila(Pila p);/*Prototipos*/
int cuenta(Pila );
Pila Pega(Pila ,Pila );
Pila Invierte(Pila );
Pila insord(Elem,Pila );
int esmenor(Elem,Elem);
int esmayor(Elem,Elem);
Pila ordena(Pila );
int esdig(char);
intesletra (char);
int izq(Elem);
int der(Elem);
int prec(Elem);
/*************************************************/
int main (int argc, char *argv[]){
// Pila operador;
int i=0;
char*s=*(argv+1);
/* while(s[i]!='\0')
printf("%c\n",s[i++]);
*/
/*
Pila operador=empty();
while(s[i]!='\0')
{
if(esletra(s[i])||esdig(s[i]))
impElem(s[i++]);
elseoperador=push(s[i++],operador);
}
ImpPila (operador);
puts(*++argv);
*/
Pila in=empty();
while(s[i]!='\0')
{
if(esletra(s[i])||esdig(s[i]))
impElem(s[i++]);
else if(izq(s[i]))in=push(s[i++],in);
else if(der(s[i]))
{
while(!izq(top(in)))
{
impElem(top(in));
in=pop(in);
}
in=pop(in);
i++;
}
else if(isempty(in))in=push(s[i++],in);
else if(izq(top(in)))
in=push(s[i++],in);
else if(esmayor(prec(s[i]),prec(top(in))))
in=push(s[i++],in);
else
{
while(!esmayor(s[i],prec(top(in))))
{impElem(top(in));
in=pop(in);
}
}
in=push(s[i++],in);
}
impPila(in);
return 0;
}
/*************************************************/
Pila empty ()
{
return NULL;}
Pila push(Elem e, Pila p)
{
Pila temp=(Pila )malloc(sizeof(struct Nodo));
temp->info=e;
temp->sig=p;
return temp;
}
int isempty(Pila p){
return p==NULL;
}
Elem...
Regístrate para leer el documento completo.