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; p>
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() p>
{
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 ; }