Red de conocimiento informático - Conocimiento informático - Ayúdame a traducir el significado de este programa, sé más específico.

Ayúdame a traducir el significado de este programa, sé más específico.

Esto simula el funcionamiento básico de la pila

#include //Consulta el archivo de encabezado stdlib

#include

#define OK 1 //definir OK es 1 (código de estado)

#define ERROR 0 //definir ERROR es 0 (código de estado)

#define OVERFLOW -2 //Igual que arriba (código de estado)

#define LISTINCREMENT 10 //El espacio de memoria aumenta automáticamente cuando la pila está llena

#define INFEASIBLE -1 //No se usa a continuación, definición vacía

#define STACK_INIT_SIZE 100 // Cuánta memoria inicializar durante la inicialización

#define STACKINCREMENT 10 // Si la pila está llena, aumenta la memoria space

typedef int SElemType; //definimos SelemType como int, es decir, lo mismo que int, como int x = 6 y SelemType x = 6

typedef int Status / /el mismo

typedef int ElemType;

typedef struct SqStackType; //el mismo

typedef struct SqStack //definir la estructura SqStack (una pila analógica)

{

SElemType *base; //miembro de estructura, puntero int

SElemType *top; //miembro de estructura, puntero int

int stacksize; // Miembro de la estructura, datos int que representan el tamaño de la pila

}SqStack;

SqStack S; //Declarar S

Estado InitStack(); /Definir la función InitStack (función: inicializar el tamaño de memoria requerido: definición Función Push (función: presionar la pila), devolver código de estado int, parámetro int (parámetro de entrada)

Status Pop(SElemType *e) ; //Definir la función Pop (función: salir de la pila), devolver int Código de estado, parámetro int (parámetro de entrada)

Status Pop(SElemType *e); //Definir la función Pop (función: salir de la pila); la pila).

p>char *b="0123456789ABCDEF"; //Definir b (puntero de carácter)

int n,N,M,L,e; //Declaración de variable

SqStack S; //Declaración de estructura

InitStack(); //Pila de inicialización

printf("Ingrese el número a convertir: " //Solicitud de entrada

scanf("%d",&n); //Guardar la entrada del usuario en n variables

N=M=L=n //N, M, L son todos iguales a n valores

while(N) // Bucle cuando N no es igual a 0

{

Push(N % 8); //El resto de N dividido por 8; empuja la pila

N = N / 8; //N disminuye

}.

printf("La conversión a octal es: "); //Pista

while(!StackEmpty()) // Bucle cuando la pila no está vacía

{

Pop(&e); //saca un valor de la pila, guárdelo en e (las "cosas" correspondientes en la pila se reducirán en uno)

printf ("%d",e); //imprime e

}

printf("\n"); //imprime la nueva línea

mientras( M) //recorrer mientras M no sea cero

{

{

Recorrer mientras M no esté vacío

{

Pop(M); //opta el valor de la pila y guárdalo en e (las "cosas" correspondientes en la pila se reducen en uno).

{

Push(M % 2); //apila el resto de M dividido por 2, lo siguiente es lo mismo que arriba

M = M / 2;

}

printf("Convertido a binario: "

while(!StackEmpty())

{

Pop(&e);

printf("%d",e

}

printf("/n");

mientras(L)

{

Empujar(L % 16

L = L / 16; p>

p>

}

printf("Convertido a hexadecimal: ");

while(!StackEmpty())

{

Pop(&e);

printf("%c", b[e]); //Imprime los caracteres dentro de "e"b, que se define anteriormente como "0123456789ABCDEF". ", por ejemplo, si e es igual a 2, se imprime el carácter. Por ejemplo, si e es igual a 2, imprima 2, y si e es igual a 14, imprima 'E'

}.

printf("\n");

getch(); //Deja que la ventana del bloque "DOS" no se cierre, se detendrá allí.

}

Estado InitStack() //Cuerpo de la función (declarada arriba, ahora implementada)

{

/// Abra un nuevo espacio de memoria para el miembro base de la estructura S (el tamaño del espacio es STACK_INIT_SIZE * sizeof(int))

S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));

p>

/Si malloc devuelve un error

if(!S.base)

exit(OVERFLOW); // Luego salga con el código de estado OVERFLOW (salir). el programa en lugar de Función)

S.top = S.base; //el primero y el último indican que aún no hay datos

S.stacksize=STACK_INIT_SIZE //Cambiar el valor del miembro (indica el tamaño de la pila)

return OK; // Devuelve el código de estado OK

}.

Status Pop(SElemType *e) //Función de implementación

{

if(S.top == S.base) //If S.top == S.base) //Si S.top == S.base, entonces no hay ningún valor en él, por lo que no puedes sacarlo

return ERROR //Salir con el estado code ERROR; //salir con código de estado ERROR

*e = *--S.top; //Disminuir el puntero a S.top (longitud sizeof(int)) y cambiar el valor de la dirección Asigne la dirección de e

return OK; //Estado de devolución exitosa

}.

Status Push(SElemType e) //Ejecutar función

{

if(S.top - S.base >= S.stacksize) //Si La pila está llena

{

//luego reasigna espacio (aumenta espacio, aumenta tamaño según el LISTINCREMENT definido)

S.base = (ElemType *) realloc (S.base,(S.stacksize + LISTINCREMENT))top = S.base + S.stacksize; //Indica que no hay datos

S.stacksize += STACKINCREMENT //Redeclara el tamaño de esto. pila

}.

*S.top++ = e; //luego asigna (porque hay nuevo espacio disponible)

return OK; //return OK

}

Estado StackEmpty() // Función de implementación

{

if(S.top == S.base) //si la pila está vacía

return OK; //regresar OK

else

return ERROR; //regresar no

}

Espero que te ayude .