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.
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:
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.
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 .
Aplicaciones de la pila
Las siguientes son las aplicaciones de la pila:
int main() { cout<<'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 ' <strong>javaTpoint</strong> ' 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 'a', then 'b', and then 'c'; 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 'ab' 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';>
'hello';>