Red de conocimiento informático - Problemas con los teléfonos móviles - Programación básica

Programación básica

Hay muchos problemas con su plan, por nombrar algunos:

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

} 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;

}