logo

¿Qué es una pila?

Una pila es una estructura de datos lineal que sigue la LIFO (Último en entrar, primero en salir) principio. La pila tiene un extremo, mientras que la cola tiene dos extremos ( parte delantera y trasera ). Contiene solo un puntero. puntero superior apuntando al elemento más superior de la pila. Cada vez que se agrega un elemento a la pila, se agrega en la parte superior de la pila y el elemento solo se puede eliminar de la pila. En otras palabras, un La pila se puede definir como un contenedor en el que la inserción y eliminación se pueden realizar desde un extremo conocido como la parte superior de la pila.

Algunos puntos clave relacionados con la pila

  • Se llama pila porque se comporta como una pila del mundo real, montones de libros, etc.
  • Una pila es un tipo de datos abstracto con una capacidad predefinida, lo que significa que puede almacenar elementos de un tamaño limitado.
  • Es una estructura de datos que sigue algún orden para insertar y eliminar los elementos, y ese orden puede ser LIFO o FILO.

Trabajo de pila

Stack funciona con el patrón LIFO. Como podemos observar en la siguiente figura, hay cinco bloques de memoria en la pila; por lo tanto, el tamaño de la pila es 5.

tamaño de pitón

Supongamos que queremos almacenar los elementos en una pila y supongamos que la pila está vacía. Hemos tomado la pila de tamaño 5 como se muestra a continuación en la que empujamos los elementos uno por uno hasta que la pila se llene.

Introducción a la pila DS

Dado que nuestra pila está llena, el tamaño de la pila es 5. En los casos anteriores, podemos observar que va de arriba a abajo cuando ingresamos el nuevo elemento en la pila. La pila se llena desde abajo hacia arriba.

Cuando realizamos la operación de eliminación en la pila, solo hay una forma de entrada y salida ya que el otro extremo está cerrado. Sigue el patrón LIFO, lo que significa que el valor ingresado primero se eliminará en último lugar. En el caso anterior, el valor 5 se ingresa primero, por lo que se eliminará solo después de eliminar todos los demás elementos.

buscador y ejemplos

Operaciones de pila estándar

Las siguientes son algunas operaciones comunes implementadas en la pila:

    empujar():Cuando insertamos un elemento en una pila, la operación se conoce como push. Si la pila está llena, se produce la condición de desbordamiento.estallido():Cuando eliminamos un elemento de la pila, la operación se conoce como pop. Si la pila está vacía significa que no existe ningún elemento en la pila; este estado se conoce como estado de desbordamiento.esta vacio():Determina si la pila está vacía o no.está lleno():Determina si la pila está llena o no.ojeada():Devuelve el elemento en la posición dada.contar():Devuelve el número total de elementos disponibles en una pila.cambiar():Cambia el elemento en la posición dada.mostrar():Imprime todos los elementos disponibles en la pila.

operación de EMPUJE

Los pasos involucrados en la operación PUSH se detallan a continuación:

  • Antes de insertar un elemento en una pila, verificamos si la pila está llena.
  • Si intentamos insertar el elemento en una pila y la pila está llena, entonces el Desbordamiento ocurre la condición.
  • Cuando inicializamos una pila, establecemos el valor de top en -1 para verificar que la pila esté vacía.
  • Cuando el nuevo elemento se coloca en una pila, primero se incrementa el valor de la parte superior, es decir, arriba=arriba+1, y el elemento se colocará en la nueva posición del arriba .
  • Los elementos se irán insertando hasta llegar al máximo tamaño de la pila.
Introducción a la pila DS

operación pop

Los pasos involucrados en la operación POP se detallan a continuación:

  • Antes de eliminar el elemento de la pila, verificamos si la pila está vacía.
  • Si intentamos eliminar el elemento de la pila vacía, entonces el desbordamiento ocurre la condición.
  • Si la pila no está vacía, primero accedemos al elemento al que apunta el arriba
  • Una vez realizada la operación pop, la parte superior se reduce en 1, es decir, arriba=arriba-1 .
Introducción a la pila DS

Aplicaciones de la pila

Las siguientes son las aplicaciones de la pila:

    Equilibrio de símbolos:La pila se utiliza para equilibrar un símbolo. Por ejemplo, tenemos el siguiente programa:
 int main() { cout&lt;<'hello'; cout<<'javatpoint'; } < pre> <p>As we know, each program has <em>an opening</em> and <em>closing</em> braces; when the opening braces come, we push the braces in a stack, and when the closing braces appear, we pop the opening braces from the stack. Therefore, the net value comes out to be zero. If any symbol is left in the stack, it means that some syntax occurs in a program.</p> <ul> <tr><td>String reversal:</td> Stack is also used for reversing a string. For example, we want to reverse a &apos; <strong>javaTpoint</strong> &apos; string, so we can achieve this with the help of a stack. <br> First, we push all the characters of the string in a stack until we reach the null character. <br> After pushing all the characters, we start taking out the character one by one until we reach the bottom of the stack. </tr><tr><td>UNDO/REDO:</td> It can also be used for performing UNDO/REDO operations. For example, we have an editor in which we write &apos;a&apos;, then &apos;b&apos;, and then &apos;c&apos;; therefore, the text written in an editor is abc. So, there are three states, a, ab, and abc, which are stored in a stack. There would be two stacks in which one stack shows UNDO state, and the other shows REDO state. <br> If we want to perform UNDO operation, and want to achieve &apos;ab&apos; state, then we implement pop operation. </tr><tr><td>Recursion:</td> The recursion means that the function is calling itself again. To maintain the previous states, the compiler creates a system stack in which all the previous records of the function are maintained. </tr><tr><td>DFS(Depth First Search):</td> This search is implemented on a Graph, and Graph uses the stack data structure. </tr><tr><td>Backtracking:</td> Suppose we have to create a path to solve a maze problem. If we are moving in a particular path, and we realize that we come on the wrong way. In order to come at the beginning of the path to create a new path, we have to use the stack data structure. </tr><tr><td>Expression conversion:</td> Stack can also be used for expression conversion. This is one of the most important applications of stack. The list of the expression conversion is given below: <pre>Infix to prefix Infix to postfix Prefix to infix Prefix to postfix Postfix to infix</pre> </tr><tr><td>Memory management:</td> The stack manages the memory. The memory is assigned in the contiguous memory blocks. The memory is known as stack memory as all the variables are assigned in a function call stack memory. The memory size assigned to the program is known to the compiler. When the function is created, all its variables are assigned in the stack memory. When the function completed its execution, all the variables assigned in the stack are released. </tr></ul> <hr></'hello';>
Gestión de la memoria:La pila gestiona la memoria. La memoria se asigna en los bloques de memoria contiguos. La memoria se conoce como memoria de pila porque todas las variables se asignan en una memoria de pila de llamada de función. El compilador conoce el tamaño de la memoria asignada al programa. Cuando se crea la función, todas sus variables se asignan en la memoria de la pila. Cuando la función completa su ejecución, se liberan todas las variables asignadas en la pila.