Programación básica
1) caso "@": borrar roturas de pila, ¿desea usarlo nuevamente sin inicialización? En realidad, el puntero superior está programado con un puntero nulo.
2) Cuándo usar variables, typedef struct{. . }SqStack, *S; *S, pila inicial en. ¿Tratar a s como un puntero global? Hay que fortalecer los cimientos.
3) El código se modifica de la siguiente manera y puede ejecutarse correctamente.
#incluye & ltstdlib.h & gt
#incluye & ltstdio.h & gt
#incluye & ltstring.h & gt
#Definir verdadero 1
#Definir falso 0
#Definir OK 1
#Definir error 0
#La definición no es factible -1
#Definición desbordamiento -2
estado de carácter typedef;
typedef char SElemType
#Definición STACK_INIT_SIZE 100
#Definir incremento de pila 10
estructura typedef {
SElemType * base
SElemType * top
int tamaño de pila p>
} SqStack
sq stack S;
Estado InitStack()
{
s . tipo *)malloc(STACK _ INIT _ TAMAÑO * tamaño de (tipo selem));
if (! base de EE. UU.)
salir (desbordamiento); s.top = s.base;
S.stacksize = STACK _ INIT _ TAMAÑO
Regresar OK;
}//InintStack
Estado GetTop(SElemType *e)
{
si (S.top==S.base) devuelve un error;
* e = * ( s. top-1);
Regresar OK;
}//GrtTop
Inserción de estado (seleccione tipo e)
{
if(s . top-s . base & gt;=S.stacksize)
{
s . base =(tipo selem *)realloc ( s . base, (s . tamaño de pila+incremento de pila)* tamaño de(tipo selem));
if (! base de EE. UU.)
{
Salir (desbordamiento);
}
s . top = s . base +s . p >
}
* s . top++ = e
Regresar OK
}//Push
SElemType Pop; ( )
{
Seleccione el tipo de canal;
if(S.top==S.base)
{
Error de retorno;
}
ch = *(-s . top);
Devolver ch;
} / /pop
Estado borrar pila()
{
s .top = 0
Regresar OK;
}//Borrar la pila
Estado destruir pila()
{
s top = 0;
Regresar. OK;
}
void LineEdit()
{
init stack();
char ch
p>
ch = getchar();
Y (ch! ='\n ')
{
Y (ch!='\n ')
{
Cambiar (canal)
{
Caso '# ': printf("\n %c ", Pop());
Romper
//case "@": borrar pila(); >//break;
Predeterminado: Push(ch);
Break;
}
ch = getchar();
}
}
destruir pila();
}
int main()
{
LineEdit();
devuelve 0;
}