Red de conocimiento informático - Espacio del host - Quiero darme cuenta de que el orden de inserción en la pila es 12345, el orden de salida de la pila es 54321 y el elemento superior de la pila es 5. Hay algún problema con este programa, ¿podría por favor? ayudarme y guiarme?

Quiero darme cuenta de que el orden de inserción en la pila es 12345, el orden de salida de la pila es 54321 y el elemento superior de la pila es 5. Hay algún problema con este programa, ¿podría por favor? ayudarme y guiarme?

Ha cambiado, probémoslo, es muy difícil de cambiar, jaja

#include

#include

#define OK 1

#define ERROR 0

#define VERDADERO 1

#define FALSO 0

typedef int SElemType;

typedef int Estado;

typedef struct StackNode

{

SElemType datos;

struct StackNode *next;

}StackNode,*LinkStack;

LinkStack S; //S es una variable global aquí. No pase esta variable en el siguiente código, S siempre lo hará. be Apunte al encabezado de la pila

// Además, no defina más variables S con el mismo nombre, ¡todos cometen el mismo error! !

//La definición de la variable local es la misma que el nombre de la variable global. Las dos variables se afectarán entre sí, lo que confundirá al programa y al programador

//Inicialización de la pila. /p>

void InitStack(void)

{

S=NULL; // ¡Es inútil que solicites una variable local p aquí, elimínala! !

}

//Comprueba que la pila esté vacía

Status StackEmpty(LinkStack S)

{

if( S==NULL) devuelve OK;

de lo contrario devuelve ERROR;

}

//Empujar en la pila

void LinkStack_Push(SElemType &e )

{

LinkStack p;

p=(LinkStack)malloc(sizeof(LinkStack));

p->datos =e;

p->siguiente=S;

S=p;

}

// De vuelta de la pila

void LinkStack_Pop()

{

if( S )

{

LinkStack p;

printf(" %d", S->data ); //Agrega un espacio para que los datos queden espaciados y se vean más cómodos

p=S;

S= S->siguiente;

gratis(p);

}

}

//Obtener el elemento superior de la pila

Estado GetLinkStackTop(SElemType &e) //Es mejor devolver el estado de recuperación aquí, porque e es una referencia y puede recuperar directamente el valor de los datos

{

si(S== NULL) devuelve ERROR;

e = S->datos;

devuelve OK;

}

int main()

{

int i,num;

SElemType n;

InitStack ();

//Empujar en la pila

printf("Ingrese el número de elementos que se insertarán en la pila:");

scanf ("%d",&num);

imprimir

f("El orden de inserción en la pila es:");

for(i=0;i

{

scanf ("%d ",&n);

LinkStack_Push(n);

}

GetLinkStackTop(n);

printf( "Elemento superior de la pila: %d\n",n);

//Sacar la pila

printf("El resultado de sacar la pila es\n"); //Hay un %d adicional aquí porque no tienes parámetros

while(S)

{

LinkStack_Pop();

}

devuelve 0 ;

}