La Red de Conocimientos Pedagógicos - Conocimientos históricos - ¿Qué es un puntero de pila y cómo entenderlo?

¿Qué es un puntero de pila y cómo entenderlo?

La pila es un tipo de datos abstracto y las dos operaciones básicas necesarias especificadas son push y pop. Este tipo de datos abstractos no especifica cómo se implementan push y pop. La pregunta que hizo ya está en el nivel de implementación, por lo que de acuerdo con las disposiciones del tipo de datos abstractos de la pila, "primero modifique el puntero, luego inserte los datos, y lo contrario ocurre al abrir la pila" no es necesario. Depende de su operación.

Si la implementación de su pila es crecer hacia arriba (es decir, crecer hacia la parte superior), la esencia es que la parte inferior de su pila es fija y no se puede mover, y las cosas se empujan hacia la pila. El apilamiento solo puede continuar moviéndose hacia arriba, al igual que cuando colocas libros en el escritorio, la parte inferior del escritorio está fija, por lo que tus libros solo se pueden apilar uno por uno y los libros crecerán hacia arriba. La computadora se implementa de esta manera, por lo que tiene que ser como usted dijo: "Primero modifique el puntero, luego inserte los datos, y ocurre lo contrario cuando lo saca de la pila". El elemento superior de la pila y la parte inferior de la pila no se pueden mover, por lo que los datos deben insertarse antes de insertarse en la pila. Primero modifique el puntero para que apunte al nuevo espacio libre y luego almacene los datos en. Al abrir la pila, naturalmente será lo contrario. Consulte el ejemplo de colocación de un libro que di arriba y piénselo detenidamente.

Sin embargo, si su pila se implementa en dirección descendente (es decir, cada vez que empuja un elemento hacia la pila, la parte inferior de la pila se moverá automáticamente hacia abajo un elemento. La esencia es que esto El modelo de pila es del tipo "pozo sin fondo"). En este momento, la parte superior de su pila se vuelve fija y puede empujar el elemento primero y luego modificar el puntero. Debido a que la parte inferior de su pila es infinita, si empuja un elemento, el nuevo elemento reemplazará el elemento superior anterior y ocupará la posición superior de la pila. Entonces su puntero anterior al elemento superior de la pila debe modificarse en este momento. para que apunte a este El nuevo elemento superior de la pila.

La siguiente es una descripción de una implementación de una pila de "pozo sin fondo":

Push (empujar): empuja objetos o datos a la pila y actualiza el puntero superior de la pila. , haciendo que apunte al último objeto o datos insertados en la pila.

Sacar la pila: devuelve el objeto o los datos señalados en la parte superior de la pila, elimina el objeto o los datos de la pila y actualiza la parte superior de la pila.

Dicho esto, la computadora definitivamente elegirá el primer modelo en lugar del segundo modelo, porque en el segundo modelo, cada vez que se inserta un nuevo elemento, todos los elementos de la pila anterior deben ser eliminados. integrado. Mueva la posición de un elemento hacia abajo para liberar la posición del elemento superior de la pila y permitir que entren nuevos elementos. ¡Este tipo de traducción cuesta mucho dinero! Pero esto no significa que el modelo del "pozo sin fondo" no se pueda implementar. De hecho, se puede simular a través del primer modelo. Cada vez que es necesario insertar un nuevo elemento, primero se abre un espacio y se almacenan los datos. este espacio, y luego modifique el puntero del elemento superior de la pila para que apunte a este nuevo elemento superior de la pila.

En otras palabras, utilizando una lista vinculada, siempre que haya suficiente espacio para abrirse como nodo, se pueden implementar ambos modelos de pila (por supuesto, el tipo "pozo sin fondo" todavía usa el tercer modelo). modelo de pila como dije anteriormente Una especie de simulación; de lo contrario, la carga de trabajo de la traducción es considerable). Si usa una matriz, dado que la matriz es un espacio asignado continuamente en la memoria, es más natural usar el primer modelo. p>