Uno de los tipos de estructuras de datos que se utilizan ampliamente en la actualidad en la programación de aplicaciones es la pila. Su peculiaridad es el principio de organización de elementos, en el que su adición y eliminación es posible solo uno a la vez y solo a través de la "parte superior", es decir, de acuerdo con el principio LIFO. Pero a veces es necesario borrar toda la pila a la vez.
Necesario
- - editor de texto o IDE;
- - un traductor del lenguaje de programación utilizado.
Instrucciones
Paso 1
Utilice métodos en los objetos de la pila que estén diseñados específicamente para limpiar la pila. Están presentes en la mayoría de las clases correspondientes de varias bibliotecas y marcos. Por ejemplo, la clase. NET Stack tiene un método Clear. Un ejemplo de su aplicación en C # podría verse así:
Pila oStack = new Stack (); // crea un objeto de pila
oStack. Push ("000"); // llena la pila
oStack. Push ("111");
oStack. Clear (); // limpia la pila
Paso 2
Los métodos para cambiar el número de elementos de las clases de contenedor, en los que a menudo se construye la funcionalidad de las clases de pila, también se pueden utilizar para la limpieza. Solo necesita reducir el número actual de elementos a cero. Por ejemplo, la clase de plantilla Qt QStack hereda de la clase de plantilla QVector, que tiene un método de cambio de tamaño. Un ejemplo de su uso podría ser así:
QStack oStack; // declaración del objeto de pila
para (int i = 0; i <10; i ++) oStack.push (i); // llena la pila
oStack.resize (0); // limpiar la pila
Paso 3
La limpieza de un objeto de pila generalmente se puede hacer a través del operador de asignación, que a menudo se implementa en las clases correspondientes. Para hacer esto, el objeto de la pila que se va a borrar debe tener asignado un objeto temporal creado por el constructor predeterminado. Por ejemplo, la clase con plantilla de pila de la biblioteca estándar de C ++, que es un adaptador para clases con plantilla de contenedor, no tiene métodos para cambiar arbitrariamente el número o eliminar todos los elementos. Puedes borrarlo así:
std:: stack <int, std:: list> oStack; // declaración del objeto de pila
para (int i = 0; i <10; i ++) oStack.push (i); // llena la pila
oStack = std:: stack
Paso 4
Borre el objeto de la pila llamando al constructor de copia usando el nuevo operador con un argumento de objeto creado por el constructor predeterminado:
std:: stack <int, std:: list> oStack; // declaración del objeto de pila
para (int i = 0; i <10; i ++) oStack.push (i); // llena la pila
nuevo std:: pila
Paso 5
La pila se puede borrar recuperando secuencialmente todos los elementos usando los métodos apropiados:
std:: stack <int, std:: list> oStack; // declaración del objeto de pila
para (int i = 0; i <10; i ++) oStack.push (i); // llena la pila
while (! oStack.empty ()) oStack.pop (); // limpia la pila
Sin embargo, este enfoque tiene una complejidad de tiempo que depende linealmente del número de elementos en la pila. Por tanto, su uso no es racional.