2010-11-06 20 views
0

Je construis une base de données en utilisant un BST (arbre de recherche binaire) et je veux que l'utilisateur puisse annuler les 5 dernières commandes. Aucune suggestion? J'utilise Java.ROLLBACK undo redo

+0

Quelle est la taille de l'arbre? Si c'est assez petit, vous pouvez garder une copie pour les 5 dernières opérations. – leonm

+0

Pas très grand. Comment est-ce que je copierais ces opérations lat 5? – user475529

+0

@ user475529: ne pas conserver les cinq dernières opérations, copier l'arbre entier après chaque opération et conserver les cinq dernières. –

Répondre

0

Il semble que vous voulez le Memento pattern. Essentiellement, vous créez un objet qui a toutes les informations requises pour:

  1. De l'état de l'arborescence avant l'opération, répétez l'opération. (Redo)
  2. À partir de l'état de l'arborescence après l'opération, rétablissez l'opération. (Annuler)

Vous conserveriez les cinq derniers d'entre eux. Lorsque l'utilisateur demande une annulation, prenez la dernière, demandez-lui de revenir sur l'opération, puis indiquez en quelque sorte (une variable d'index, par exemple) où vous êtes dans la liste des souvenirs. Vous devriez alors être en mesure de parcourir la liste dans les deux sens, d'annuler et de refaire autant que vous le souhaitez.

+0

Je pensais à insérer mon arbre dans une pile le pop quand l'utilisateur appelle à défaire ?? Est-ce possible?/ – user475529

+0

Vous pouvez le faire bien sûr, mais en utilisant un souvenir, vous économiserez beaucoup d'espace tout en permettant la fonctionnalité annuler/rétablir. – cdhowie