我正在使用通用 LinkedList 实现撤消/重做缓冲区。
在这种状态下:
[最佳]
state4(撤销)
state3(撤销)
state2 状态 1
[底部]
当我执行 Push 时,我想删除当前状态之后的所有状态,并推送新的状态。
我目前的绕过是做 while (currentState != list.last), list.removeLast();
但它很糟糕
LinkedList 只支持 Remove、RemoveFirst 和 removeLast...
我想要像 RemoveAllNodesAfter(LinkedListNode ...) 这样的东西?
如何在不遍历所有节点的情况下很好地编码?也许有扩展?...
最佳答案
我在标准 LinkedList<T>
中看不到任何可以让您执行此操作的内容。如果需要,您可以查看 PowerCollections 和 C5 collections - 或者只是滚动您自己的 LinkedList
类型。它是实现起来更简单的集合之一,特别是如果您可以“及时”地添加功能。
关于C# - LinkedList - 如何删除指定节点后的所有节点?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/582122/