如何删除不在堆栈顶部的堆栈项目在C#

不幸的是,一个项目只能通过“pop”从堆栈中删除。堆栈没有“删除”方法或类似的东西,但我有一个堆栈(是的,我需要一个堆栈!),从中我需要删除一些元素之间。

有这样做的窍门吗?

最佳答案
如果你需要删除不在顶部的项目,那么你需要除栈以外的东西。

尝试从列表中自己实现堆栈。然后你实现自己的push和pop函数(在列表中添加& remove),以及你自己的特殊PopFromTheMiddle函数。

例如

public class ItsAlmostAStack<T>
{
    private List<T> items = new List<T>();

    public void Push(T item)
    {
        items.Add(item);
    }
    public T Pop()
    {
        if (items.Count > 0)
        {
            T temp = items[items.Count - 1];
            items.RemoveAt(items.Count - 1);
            return temp;
        }
        else
            return default(T);
    }
    public void Remove(int itemAtPosition)
    {
        items.RemoveAt(itemAtPosition);
    }
}

转载注明原文:如何删除不在堆栈顶部的堆栈项目在C# - 代码日志