La Red de Conocimientos Pedagógicos - Conocimientos históricos - ¿Qué es una pila?

¿Qué es una pila?

Pregunta 1: ¿Qué es una pila? Montón y pila son dos conceptos diferentes. El sistema no libera la memoria asignada en el montón y se asigna dinámicamente. El sistema libera automáticamente la memoria asignada en la pila y se asigna estáticamente. La pila de tiempo de ejecución se llama pila. La pila se asigna desde direcciones de memoria alta a direcciones bajas, mientras que el montón se asigna en la dirección opuesta. La memoria asignada por malloc o new es la memoria asignada desde el montón. La memoria asignada desde el montón debe ser liberada por el propio programador, y se producirá un error. Aparecerá el mensaje "Pérdida de memoria". Esto hará que el sistema tenga cada vez menos memoria asignable, lo que provocará que el sistema falle. Una pila es una estructura de datos que implementa un algoritmo de "último en entrar, primero en salir". Imagine un tubo de bambú de pequeño diámetro, abierto por un extremo y cerrado por el otro. Hay varias bolitas con números escritos en ellas. El diámetro de las bolitas es ligeramente menor que el diámetro del tubo de bambú. Ahora coloque las bolitas con diferentes números en el tubo de bambú y encontrará una regla: la bolita que se mete primero solo se puede sacar más tarde y, a la inversa, la bolita que se mete al final se puede sacar primero. Así pues, "el primero en entrar, el último en salir" es la característica de esta estructura. Una pila es una estructura de datos de este tipo. Abre un área de almacenamiento en la memoria y los datos se almacenan secuencialmente (es decir, se "presionan") en esta área uno por uno. Hay un puntero de dirección que siempre apunta a la unidad de datos donde se encuentran los últimos datos ingresados ​​en la pila. El registro que almacena este puntero de dirección se llama puntero de pila. La unidad donde se colocan los datos por primera vez se denomina "parte inferior de la pila". Los datos se almacenan uno por uno, este proceso se llama "push". Durante el proceso de inserción de la pila, cada vez que se inserta un dato en la pila, se coloca en la siguiente unidad conectada a la unidad anterior y la dirección en el puntero de la pila se incrementa automáticamente en 1. Al leer estos datos, los datos se leen de acuerdo con la dirección en el puntero de la pila y el número de dirección en el puntero de la pila se reduce automáticamente en 1. Este proceso se llama "pop popping". Esto implementa el principio de último en entrar, primero en salir. El registro de pila es el registro que almacena la pila.

Pregunta 2: ¿Cuál es el concepto de pila? Una pila es un espacio abierto en la memoria para almacenar datos

Su dirección de expansión es desde la dirección grande de la memoria a la pequeña. dirección

Se utiliza para almacenar los parámetros pasados ​​al llamar a funciones

Las variables estáticas se almacenan en el área de memoria estática del programa. Está en la parte posterior del programa y más cerca del front-end.

Pregunta 3: ¿Qué es una pila y cuál es su función? La pila es un método de creación de personajes comúnmente utilizado en las novelas, generalmente utilizado por un pequeño personaje. Por ejemplo, cierto espadachín era tan asombroso que lo llamaban invencible. Sin embargo, un hombrecito lo derrotó en una pelea frontal y sin ningún medio, mostrando su asombrosa fuerza. Esta es la pila para esta personita, para convertirlo en el prestigio de esta persona a través de la enorme fuerza de los demás. Esto es una pila

Pregunta 4: ¿Qué era una pila en la antigüedad? Es un edificio utilizado para almacenar artículos. "¿El Libro de las Canciones? Xiaoya" contiene la frase "Almacén Naiqiu Qiansi", que muestra que la construcción de almacenes tiene una larga historia. Los almacenes modernos consideran más beneficios comerciales que el simple almacenamiento. Ésta es la diferencia con el antiguo almacén. Por lo tanto, los almacenes modernos conceden gran importancia a la distribución razonable de los pasillos, la distribución de las mercancías y la altura máxima de apilamiento en términos de volumen de transporte, métodos de almacenamiento e instalaciones de construcción, y configuran mecanizaciones rentables e instalaciones de acceso automatizadas para mejorar la capacidad de almacenamiento. y eficiencia en el trabajo.

Un almacén consta de un almacén para almacenar artículos, instalaciones de transporte (como grúas, ascensores, toboganes, etc.), tuberías de transporte y equipos para entrar y salir del almacén, instalaciones de protección contra incendios y salas de gestión. . Según la forma de los artículos almacenados, los almacenes se pueden dividir en almacenes para almacenar artículos sólidos, artículos líquidos, artículos gaseosos y artículos en polvo, según la naturaleza de los artículos almacenados, se pueden dividir en almacenes para almacenar materias primas, semi; -productos terminados y productos terminados según la construcción. La forma se puede dividir en almacén de una sola capa, almacén de varias capas y almacén cilíndrico;

El almacén monocapa es adecuado para almacenar materiales metálicos, materiales de construcción, minerales, productos mecánicos, vehículos, petróleo, materias primas químicas, madera y sus productos, etc. Los almacenes de las terminales de transporte acuático, los almacenes de transporte ferroviario y los almacenes de transporte aéreo utilizan principalmente edificios de un solo piso para acelerar la carga y descarga. El diseño general del almacén de un solo piso requiere que las carreteras se conecten a través de él, de modo que los vehículos de envío y los montacargas puedan entrar y salir directamente del almacén. Este tipo de almacén generalmente adopta una estructura prefabricada de hormigón armado, la red de columnas es generalmente de 6 metros y las luces varían entre 12 metros, 15 metros, 18 metros, 24 metros, 30 metros y 36 metros. Para almacenes con gran carga de piso, la luz debe ser grande. La capacidad de elevación de la grúa en el almacén se determina en función del peso máximo de un único artículo almacenado. Se pueden utilizar grúas de una sola viga o polipastos monorraíl si la capacidad de elevación es inferior a 5 toneladas, y se pueden utilizar puentes grúa si la capacidad de elevación es superior a 5 toneladas. Los almacenes deben ser a prueba de humedad. Si se utiliza para almacenar materiales inflamables, se debe utilizar una capa de piso flexible para evitar chispas. Tanto los techos como las paredes deben ser impermeables y estancos.

Los almacenes multicapa generalmente almacenan grandes almacenes, equipos electrónicos, alimentos, productos de caucho, medicamentos, equipos médicos, productos químicos, papelería, instrumentos, etc. En la planta baja deberá existir una zona de carga y descarga, a la que puedan acceder directamente los vehículos de carga y descarga. El transporte vertical de mercancías generalmente utiliza elevadores de carga con una capacidad de 1,5 a 5 toneladas. Se debe considerar la posibilidad de disponer de un carro de carga o un montacargas que pueda introducirse en la sala del ascensor para acelerar la carga y descarga. Los toboganes se utilizan comúnmente en almacenes de varios pisos para la descarga. Los toboganes están hechos en su mayoría de estructuras de hormigón armado, con cera de terrazo como capa superficial; también se pueden usar esqueletos metálicos y superficies de placas de acero, pero se debe evitar que las placas de acero se oxiden o se pueden usar placas de acero inoxidable como capa superficial. Si la carga unitaria de un almacén de varios pisos es superior a 500 kilogramos, se pueden utilizar pisos sin vigas. Los almacenes generalmente no están pintados y las juntas de lechada se pueden pintar de blanco. Los almacenes que almacenan grandes almacenes, medicamentos, alimentos y ropa deben pintarse para evitar que los insectos se escondan en las costuras. El almacenamiento y la recogida de los "almacenes tridimensionales" en almacenes multicapa se mecanizan mediante ordenadores electrónicos. Este tipo de almacén ocupa un área pequeña y ahorra mano de obra, pero almacena una determinada gama de productos.

Los almacenes cilíndricos generalmente almacenan cemento a granel, escoria seca, cenizas volantes, cereales a granel, petróleo, gas y otros gases. El diseño arquitectónico del almacén cilíndrico se determina según los tipos de artículos almacenados y los métodos de carga y descarga. El techo, las paredes y el fondo del almacén deben ser impermeables y resistentes a la humedad, y se debe instalar un dispositivo de vacío en la parte superior del almacén. Para facilitar el mantenimiento diario, se deben instalar orificios para colgar, bocas de acceso (con escaleras en la pared del almacén), orificios para contenedores de medición y ganchos de elevación. Los almacenes cilíndricos generalmente utilizan estructuras de hormigón armado pretensado coladas in situ y se construyen mediante el método de encofrado deslizante. El almacenamiento de petróleo y el almacenamiento de gas están hechos de estructuras metálicas. Preste atención a la ventilación del almacén. Se deben instalar contraventanas en las paredes exteriores de cada almacén y se debe agregar malla metálica fuera de las contraventanas para evitar aves. Los almacenes de mercancías peligrosas, como los que almacenan petróleo (gas) o materias primas químicas, deben ser resistentes al calor y a la humedad, añadir una capa de aislamiento térmico en el tejado o diseñarlo como un tejado a prueba de explosiones, instalar tabiques ignífugos en el entrada y salida, y utilizar materiales que no produzcan chispas en el suelo. Generalmente, se puede utilizar asfalto en el suelo. En los depósitos de almacenamiento de petróleo deben instalarse fosas de recogida de petróleo. Los almacenes de alimentos deben estar protegidos contra hormigas y abejas.

Pregunta 5: ¿Qué significa pila? En el campo de la informática, la pila es un concepto que no se puede ignorar, pero muchas personas, incluso los profesionales de la informática, no comprenden que la pila son en realidad dos estructuras de datos.

Puntos clave:

Montón: cualquier orden

Pila: primero en entrar, último en salir

La diferencia entre montón y pila

1. Conocimientos preliminares: asignación de memoria de programas

La memoria ocupada por un programa compilado por C/C se divide en las siguientes partes

1. Área de pila ( pila): compuesto por El compilador asigna y libera automáticamente, almacenando valores de parámetros de función, valores de variables locales, etc. Opera como una pila en una estructura de datos.

2. Área del montón (montón): generalmente asignada y liberada por el programador. Si el programador no la libera, el sistema operativo puede reciclarla cuando finalice el programa. Tenga en cuenta que es diferente del montón en la estructura de datos. El método de asignación es similar a una lista vinculada, jaja.

3. Área global (área estática) (estática): las variables globales y las variables estáticas se almacenan juntas. Las variables globales inicializadas y las variables estáticas están en la misma área. área adyacente.

- El sistema lo liberará una vez finalizado el programa.

4. Área constante literal: la cadena constante se coloca aquí. El sistema lo publicará una vez finalizado el programa.

5. Área de código del programa: almacena el código binario del cuerpo de la función.

2. Programa de ejemplo

Esto está escrito por un senior, muy detallado

main.cpp

int a = 0; Área de inicialización

char *p1; Área global no inicializada

main()

{

int b; p> char s[] = abc; stack

char *p2; stack

char *p3 = 123456\0 está en el área constante y p3 está en la pila. .

static int c =0; área de inicialización global (estática)

p1 = (char *)malloc(10); malloc(20);

Las áreas asignadas de 10 y 20 bytes están en el área del montón.

strcpy(p1, 123456); 123456\0 se coloca en el área constante y el compilador puede optimizarlo en el mismo lugar que 123456 señalado por p3.

}

2. Conocimiento teórico de montón y pila

2.1 Método de aplicación

pila:

Por El sistema asigna automáticamente. Por ejemplo, declare una variable local int b en una función; el sistema crea automáticamente espacio para b en la pila

montón:

El programador debe solicitarlo él mismo y especificar el tamaño. En c función malloc

Por ejemplo, p1 = (char *)malloc(10

Utilice nuevo operador en C

Por ejemplo, p2); = (char *)malloc (10);

Pero tenga en cuenta que p1 y p2 están en la pila.

2.2

Respuesta del sistema después de la aplicación

Pila: Siempre que el espacio restante de la pila sea mayor que el espacio aplicado, el sistema proporcionará memoria para el programa; de lo contrario, se informará una excepción. Desbordamiento de pila.

Montón: En primer lugar, debe saber que el sistema operativo tiene una lista vinculada que registra las direcciones de memoria libre. Cuando el sistema recibe una solicitud del programa,

recorrerá el montón. lista vinculada para encontrar el primer espacio mayor que El nodo de montón del espacio solicitado se elimina de la lista de nodos libres y el espacio del nodo se asigna al programa. Además, para la mayoría de los sistemas, estará en el primero. dirección de este espacio de memoria Registre el tamaño de esta asignación para que la declaración de eliminación en el código pueda liberar correctamente este espacio de memoria. Además, dado que el tamaño del nodo del montón encontrado puede no ser exactamente igual al tamaño solicitado, el sistema automáticamente colocará la parte sobrante nuevamente en la lista enlazada libre.

2.3 Límite de tamaño de la aplicación

Pila: en Windows, la pila es una estructura de datos que se extiende a direcciones bajas y es un área de memoria continua. Esta oración significa que la dirección de la parte superior de la pila y la capacidad máxima de la pila están predeterminadas por el sistema. En WINDOWS, el tamaño de la pila es 2 M (algunos dicen que es 1 M, en resumen, es una determinación constante). en el momento de la compilación). Si el espacio solicitado excede el espacio restante de la pila, se generará un desbordamiento. Por lo tanto, desde la pila...gt;gt;

Pregunta 6: ¿Qué es una pila? La pila es una estructura de datos que implementa el algoritmo "el último en entrar, el primero en salir".

Imagínate un tubo de bambú de pequeño diámetro, abierto por un extremo y cerrado por el otro. Hay varias bolitas con números escritos en ellas. El diámetro de las bolitas es ligeramente menor que el diámetro del tubo de bambú. Ahora coloque las bolitas con diferentes números en el tubo de bambú y encontrará una regla: la bolita que se mete primero solo se puede sacar más tarde y, a la inversa, la bolita que se mete al final se puede sacar primero. Así pues, "el primero en entrar, el último en salir" es la característica de esta estructura.

Una pila es una estructura de datos de este tipo. Abre un área de almacenamiento en la memoria y los datos se almacenan secuencialmente (es decir, se "presionan") en esta área uno por uno. Hay un puntero de dirección que siempre apunta a la unidad de datos donde se encuentran los últimos datos ingresados ​​en la pila. El registro que almacena este puntero de dirección se llama puntero de pila. La unidad donde se colocan los datos por primera vez se denomina "parte inferior de la pila". Los datos se almacenan uno por uno, este proceso se llama "push". Durante el proceso de empujar la pila, cada vez que se inserta un dato en la pila, se coloca en la siguiente unidad conectada a la unidad anterior y la dirección en el indicador de la pila se incrementa en 1. Al leer estos datos, los datos se leen de acuerdo con la dirección en el puntero de la pila y el número de dirección en el puntero de la pila se reduce automáticamente en 1. Este proceso se llama "pop popping". Esto implementa el principio de último en entrar, primero en salir.

La pila es la estructura de datos más utilizada en las computadoras. Por ejemplo, las llamadas a funciones se implementan utilizando pilas en las computadoras.

La pila se puede almacenar en una matriz o en una lista vinculada, que se presentará más adelante.

La siguiente es una definición de la estructura de la pila, que incluye un puntero superior de la pila y una matriz de elementos de datos. El puntero superior de la pila inicialmente apunta a -1 y luego, cuando se almacenan los datos, el puntero superior de la pila aumenta en 1. Después de extraer los datos, el puntero superior de la pila disminuye en 1.

#define MAX_SIZE 100

typedef int DATA_TYPE;

estructura pila

{

DATA_TYPE datos[MAX_SIZE ];

int top;

};

Pregunta 7: Describa brevemente qué es una pila y el proceso de insertarla. La pila es en realidad dos estructuras de datos. Una pila es una estructura de datos en la que los elementos de datos están organizados en orden. Los elementos de datos solo se pueden insertar y eliminar en un extremo

(llamado la parte superior de la pila)

. Puntos clave: pila, en cualquier orden. Apilar, último en entrar/primero en salir.

Hay dos operaciones básicas para la estructura de datos de la pila: empujar y sacar.

El marco de la pila contiene dos indicadores: la parte inferior y la parte superior de la pila. La parte superior de la pila identifica la dirección de los datos que se insertarán o extraerán

, mientras que la parte inferior de la pila representa la dirección de memoria de los últimos datos en el marco de la pila.

En Win32, el registro esp almacena el puntero inferior de la pila y la pila crece hacia la dirección inferior.

Por lo tanto, esp apunta al elemento superior de la pila. /p>

Comparación de pilas (sistema operativo):

Asignado y liberado automáticamente por el compilador para almacenar valores de parámetros de funciones, valores de variables locales, etc. Su

método de operación es similar a la pila en la estructura de datos, que utiliza el caché de primer nivel

Generalmente está en el espacio de almacenamiento cuando se llama y se libera inmediatamente. una vez completada la llamada

Montón (sistema operativo):

Generalmente asignado y liberado por el programador

Si el programador no lo libera. El sistema operativo puede reciclarlo cuando finaliza el programa. El método de asignación es similar a la lista vinculada.

El montón se almacena en la caché de segundo nivel y el ciclo de vida está determinado por el algoritmo de recolección de basura de la máquina virtual (no se puede reciclar una vez que se convierte en un objeto huérfano).

Por lo tanto, la velocidad de llamada de estos objetos es relativamente baja

Montón (estructura de datos)

: el montón se puede considerar como un árbol, como por ejemplo: clasificación de montón

Pila (estructura de datos)

: una estructura de datos de último en entrar, primero en salir

Diferentes idiomas tienen diferentes descripciones. Puede ver las API de varios idiomas.

Pregunta 8: ¿Qué es una pila? ¿Qué hace la pila? Respuesta satisfactoria, amigo entusiasta 2011-06-22 La pila son en realidad dos conceptos en los resultados de datos, que es la forma de almacenar datos en el montón: orden aleatorio: último en entrar/primero en salir (último en entrar/primero en salir). . Para hablar de su utilidad, al escribir código, a veces el acceso a los datos debe tener un orden prescrito. Esto lo estipula usted, y luego puede usar el montón, la pila o la cola de acuerdo con las características del programa que escribe. clases: Al programar, ¿por qué necesitamos reasignar el puntero de pila SP? Respuesta: ¿No es esto una inicialización? La pila es un área de almacenamiento especial. Su función principal es almacenar temporalmente datos y direcciones. Generalmente se usa para proteger puntos de interrupción y escenas. Su característica es acceder a los datos según el principio de primero en entrar, último en salir. Aquí, la entrada y la salida se refieren a las operaciones de inserción y extracción. Algunas unidades de RAM en chip 80C51 se pueden utilizar como pilas. Hay un registro de puntero de pila SP de 8 bits, que se utiliza para indicar qué unidad de RAM en el chip está en la parte superior de la pila actual. Después de restablecer el sistema del microcontrolador 80C51, el valor inicial de SP es 07H, lo que significa que la información se apilará desde la unidad 08H de la RAM interna. Sin embargo, el área de la pila de la serie 80C51 no es fija. El área de la pila se puede cambiar cambiando el valor del registro SP a través del software. Para evitar el área de registro de trabajo y el área de direccionamiento de bits, el valor inicial de SP se puede establecer en un valor de dirección de 2FH o mayor. Si la CPU va a utilizar dos conjuntos de registros de trabajo durante la operación, si no se utilizan variables de bits, el valor inicial de SP debe ser al menos 0FH o mayor; si se utilizan variables de bits, el valor inicial de SP debe ser al menos 2FH; o mayor; El compilador KeilC51 calculará automáticamente el valor de configuración inicial de SP sin que el programador tenga que preocuparse.

Pregunta 9: ¿Qué significa pila? En informática, una pila es una lista lineal limitada a operaciones de inserción o eliminación solo al final de la lista. Una pila es una estructura de datos, una lista lineal especial que solo se puede insertar y eliminar en un extremo. Almacena datos de acuerdo con el principio de último en entrar, primero en salir. Los datos que ingresan primero se colocan en la parte inferior de la pila y los últimos datos están en la parte superior de la pila. extraído de la parte superior de la pila (los últimos datos se leen primero). Una pila es una lista lineal especial que permite operaciones de inserción y eliminación en el mismo extremo. El extremo que permite las operaciones de inserción y eliminación se llama la parte superior de la pila, y el otro extremo es la parte inferior. La parte inferior de la pila es fija y la parte superior de la pila flota cuando el número de elementos en la pila es cero. , se llama pila vacía. La inserción generalmente se llama PUSH y la eliminación se llama popping (POP). La pila también se llama tabla LIFO: Last IN First Out. La pila se puede usar para almacenar puntos de interrupción cuando se llaman funciones. La pila se usa al realizar recursividad.

Como se mencionó anteriormente, ¡es muy claro! p>

Aunque está copiado

Pregunta 10: ¿Cuáles son las características de la pila? La pila es una estructura de datos que implementa el algoritmo "último en entrar, primero en salir"

La pila es una estructura de datos que abre un área de almacenamiento en la memoria y los datos se almacenan en esta área uno por uno (es decir, "empujar"). La unidad de datos donde se colocan los datos en la pila y el registro que almacena el puntero de dirección se denomina puntero de pila. La unidad donde se colocan los datos por primera vez se denomina "parte inferior de la pila". En el proceso de empujar la pila, cada vez que se inserta un dato en la pila, se coloca en la siguiente unidad conectada a la unidad anterior. Al leer estos datos, la dirección en el puntero de la pila aumenta automáticamente en 1. Los datos se leen de la dirección y el número de dirección en el puntero de la pila se reduce automáticamente en 1.

Este proceso se llama "pop popping". Esto implementa el principio de último en entrar, primero en salir.