gpt4 book ai didi

.net - 使用 Memento : Stack, 队列或仅使用 LinkedList 撤消/重做?

转载 作者:行者123 更新时间:2023-12-03 17:21:07 24 4
gpt4 key购买 nike

实现时最好有什么Memento pattern (用于撤消/重做)

在女巫收藏中保留纪念品?

基本上,我需要这个(c = 更改,u = 撤销,r = 重做):

                  0
*c
-1 0
*c
-2 -1 0
*c
-3 -2 -1 0
<u
-2 -1 0 1
*c
-3 -2 -1 0

变体:
  • 链表 - 原则上可能,可能没有优化。
  • 队列 - 不适用于此任务,IMO。
  • 堆栈 - 不适用于撤消和重做;
  • 双栈 - 也许是最优的,但无法控制撤销的最大大小。
  • 最佳答案

    最后,我使用了 LinkedList

    Public Sub Add(ByVal item As T)
    If _list.Count > 0 Then
    If Me.IsFull Then
    ' we forgot (delete) the oldest state '
    _list.RemoveFirst()
    End If
    ' remove all the following the current items objects '
    Dim lastNode As LinkedListNode(Of T) = _list.Last
    While Not Object.ReferenceEquals(_currentNode, lastNode)
    _list.RemoveLast()
    lastNode = _list.Last
    End While
    End If

    ' add the new item and point current to it '
    _currentNode = _list.AddLast(item)
    End Sub

    关于.net - 使用 Memento : Stack, 队列或仅使用 LinkedList 撤消/重做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2333416/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com