Si necesita almacenar operaciones de deshacer / rehacer en un procesador de textos, ¿qué estructura de datos se puede usar?

Se usa la pila para la operación de deshacer / rehacer del navegador :

Cada navegador web tiene un botón Atrás. A medida que navegamos de una página web a otra página web, esas páginas se colocan en una pila (en realidad, son las URL las que van en la pila). La página actual que estamos viendo está en la parte superior y la primera página que miramos está en la base. Si hacemos clic en el botón Atrás, comenzamos a movernos en orden inverso a través de las páginas.

Otros usos de las pilas:

  • Un mecanismo de “deshacer” en editores de texto; Esta operación se realiza manteniendo todos los cambios de texto en una pila.
  • Deshacer / rehacer pilas en Excel o Word.

Editar 1:

Para las funciones de deshacer / rehacer, tomemos 2 pilas. Una pila para “deshacer”, es decir, ir hacia atrás a la página en la que estábamos y otra sería para “deshacer”, es decir, avanzar.

Algo:

  • Vamos a usar pilas, pila trasera y pila delantera.
  • Cuando la pila está vacía, deshabilite el botón.
  • Cuando naveguemos a la nueva Url, presione url en Back Stack. Clear Forward Stack, este es el paso complicado en el caso de Linked List o cualquier otra implementación.
  • Cuando presiona el botón Atrás, saque la URL superior de la Pila de Atrás, empújela hacia la Pila de Adelante.
  • Cuando presiona el botón de avance, levante la URL superior de la pila de avance y empújela a la pila de retroceso.

Pseudocódigo:

función moveBackward (deshacer, rehacer)
si deshacer no está vacío, entonces
Empuje la página actual en la pila de rehacer
Abre la pila de deshacer y ve a esa página
Terminara si
Función final

función moveForward (deshacer, rehacer)
si rehacer no está vacío, entonces
Empuje la página actual en la pila de deshacer
Abre la pila de rehacer y ve a esa página
Terminara si
Función final

Edición 2:

¿Dónde se usa stack / queue en el navegador web? El | Práctica | GeeksforGeeks

More Interesting

¿Cómo podemos calcular el factorial de los primeros N números naturales usando la metaprogramación de plantilla en C ++?

¿Hay algún libro para la recursividad?

Cómo elegir un elemento único de una lista dentro de un bucle en R

¿Qué es una explicación intuitiva sobre cómo funcionan las matrices de sufijos?

Encuentre la suma máxima del subconjunto de longitud k de un conjunto dado, de modo que la suma sea estrictamente menor que M

Cómo encontrar un árbol de expansión T con el mínimo peso máximo de trayectoria para 2 vértices en G

¿Tengo que hacer programación competitiva si estoy aprendiendo la estructura de datos y los algoritmos, mientras que la programación competitiva me distrae o primero tengo que aprender la estructura de datos y el algoritmo por completo y luego saltar a la programación competitiva?

¿Cuál es el enfoque algorítmico para invertir un árbol binario dado?

¿Es cierto que no debería importarme tanto aprender lenguajes de programación sino construir una gran base de estructuras de datos y algoritmos?

¿Cuál es el tema del proyecto de buena implementación para estudiantes junior que toman CSE 101 (Algoritmo)?

¿Necesita algoritmos para la interfaz de usuario?

F (n) E de O (g (n)) donde log (g (n))> 1 yf (n)> 1 para n grande?

Cómo hacer un proyecto de chatbot

¿Qué series matemáticas debo saber para calcular la complejidad de cualquier algoritmo o pseudocódigo?

Cómo hacer un software de árbol de decisiones más interactivo