当前位置: 首页 > 知识库问答 >
问题:

Stack中元素的弹出范围

梁丘烨
2023-03-14

嗨,伙计们,我需要一个关于堆栈的小帮助。Pop()函数。我知道堆栈可以一个接一个地弹出元素,但是我需要不止一个元素才能弹出。例如,我在堆栈中有5个元素(4,3,2,1,0),现在我想弹出前3个或2个元素,直到堆栈索引达到1或2。现在我有“for”循环,它不能正常工作:

for(var i = stack.Count - 1; i >= 0; i--)
{
    stack.Pop();
}

有人能帮我吗,让他弹出一定范围的元素?谢谢!

共有3个答案

国景铄
2023-03-14

您还可以创建一个扩展方法:

public static class Extensions
{
    public static List<T> PopRange<T>(this Stack<T> stack, int amount)
    {
        var result = new List<T>(amount);
        while (amount-- > 0 && stack.Count > 0)
        {
            result.Add(stack.Pop());
        }
        return result;
    }
}

并在您想要的地方使用它:

var stack = new Stack<int>(new[] { 1, 2, 3, 4, 5 });

var result = stack.PopRange(3);

// result: { 5, 4, 3 }
//  stack: { 2, 1}
沃盛
2023-03-14

您可以使用一个简单的while循环来执行以下操作:

var stack = new Stack<int>(new[]{ 4, 3, 2, 1, 0 });

var numberToPop = 3;
while(numberToPop > 0 && stack.Count > 0)
{
    numberToPop--;
    stack.Pop();
}
翟鸿振
2023-03-14

如果你想弹出直到堆栈达到一定大小,只需使用

while(stack.Count > desiredCount)
    stack.Pop();

如果你想弹出一定数量的物品,那就使用

for(int i=0; i < numberOfItemsToPop && stack.Count > 0; i++)
    stack.Pop();
 类似资料:
  • 我想知道是否有一个java函数可以检查索引0-5中的值?例如在不使用循环的情况下,有一个函数将子数组1[0-5]中的元素标识为{1,2,3,4,5}

  • 我正在使用Selenium从一个在线数据库中提取结果。然而,一旦我选择了我的结果并去导出它们,一个弹出窗口就会出现。通常,我会将框架切换到这个窗口,但它似乎是javascript生成的。当弹出窗口中有元素时,具体名称会不断变化。例如,有一个submitButton id标记。然而,它总是附加着不同结尾。例如,它将是id=“SubmitButton_15BB0B69431”,但下一次它将是完全不同的

  • 我正在与JSoup合作,以下是我的代码: 这是页面: 我想得到以下元素的值: itemPrice,_18gRm, itemtitle,_2FRXm 谢谢大家。

  • 本文向大家介绍在Python中删除范围内的元素,包括了在Python中删除范围内的元素的使用技巧和注意事项,需要的朋友参考一下 通过使用元素的索引和del函数,可以直接从python删除单个元素。但是在某些情况下,我们需要删除一组索引的元素。本文探讨了仅删除索引列表中指定的列表中那些元素的方法。 使用排序和删除 在这种方法中,我们创建一个包含必须删除的索引值的列表。我们对它们进行排序和反转以保留列

  • 问题内容: 我正在使用Selenium Webdriver自动执行网页。我无法使用简单元素定位器方法在模式弹出窗口中单击按钮。 例: 打开www.walmart.com 在搜索框中输入电视。 选择一些电视,然后单击“添加到购物车” 现在出现一个弹出窗口,其中有“签出”按钮。我需要点击此“结帐”按钮。 我尝试了switchTo()窗口句柄,也尝试了switchTo()框架,但没有任何效果。 问题答案

  • 弹性布局盒模型的核心,在于弹性容器中子元素的尺寸是弹性的,容器会根据布局的需要,自动调整子元素的尺寸和顺序,并以最佳方式填充所有可用空间。 当容器中有空白空间时,子元素可以扩展,以占据额外的空白空间;当容器中的空间不足时,子元素可以缩小尺寸,以防止超出容器范围。 在弹性布局盒模型中,浏览器会根据子元素的相关属性,来自动调整子元素的尺寸和顺序。这些属性见表 9‑8: 表 9-8 CSS3弹性布局盒模