Red de conocimiento informático - Aprendizaje de código fuente - Preguntas sobre programación de estructuras de datos (lenguaje c)

Preguntas sobre programación de estructuras de datos (lenguaje c)

Porque su pregunta no termina hasta que el símbolo de entrada no coincide con el elemento en la parte superior de la pila.

Por lo tanto, puede ocurrir un desbordamiento cuando se usa una pila secuencial, así que aquí uso Pila de cadena para resolver este problema

El código es el siguiente:

#include

#include

#define len sizeof(stack)

typedef struct node

{

char c;

struct node* siguiente ;

}stack,*link;

link push(link s,char c); //Empujar en la pila

link pop(link s); //Pila de salida

int main ()

{

int flag=1; //Iniciado en 1, lo que indica que los símbolos de entrada coinciden

char c,top;

link s=NULL //Vaciar la pila

while(1)

{

<; p> scanf("%c",&c);

cambiar(c)

{

caso '[':

case ' {':

case '(':

s=push(s,c);

break;

case '] ':

case '}':

case ')':

top=s->c //Obtener la parte superior de la pila y compararlo con c

if((top=='['&&c==']')||(top=='{'&&c=='}')||(top== '('&&c==' )')) //Determina si el elemento superior de la pila es el mismo que c

s=pop(s);

else

flag=0; // No quiero De la misma manera, cambiar el valor de la bandera flag

break;

}

if(!flag) //Si el flag no es verdadero, significa que los símbolos no coinciden y muestran información relevante y salimos, de lo contrario continúa escribiendo

{

printf(" ¡El símbolo no coincide!\n");

break;

}

}

devuelve 0;

}

enlace push(enlace s,char c)

{

enlace p;

p=(enlace)malloc (len);

//La operación de inserción práctica es sin el nodo principal. Cree una lista enlazada individualmente utilizando el método de inserción principal

p->c=c;

p->next=s;

s=p; //Actualizar la parte superior de la pila

return s; //Volver a la parte superior de la nueva pila

}

enlace emergente(enlace s)

{

enlace p;

p=s; parte superior de la pila original

s=s->next; //Actualizar la parte superior de la pila

free (p); //Eliminar la parte superior de la pila original

p>

devolver s;

}