首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >返回堆栈的最小值

返回堆栈的最小值
EN

Stack Overflow用户
提问于 2018-02-16 10:12:14
回答 1查看 60关注 0票数 0

我有一个名为removeMin的方法,它接受一个Stack<CalendarDate>作为参数,从堆栈中删除最小值(在本例中是最早的日期)并返回它。然而,我没有得到我预期的价值。我相信我对stacks有足够的了解。这是我的方法。

代码语言:javascript
运行
复制
public static CalendarDate removeMin(Stack<CalendarDate> stack) {
        Queue<CalendarDate> aux = new LinkedList<CalendarDate>();
        CalendarDate min = stack.peek();
        if(stack.size() < 1) {
            return null;
        }

        while (!stack.empty()) {
            CalendarDate c = stack.pop();
            aux.add(c);
            if(c.compareTo(min) == -1) {
                min = c;
            }
            aux.add(c);
        }

        while (!aux.isEmpty()) {
            if (aux.remove().compareTo(min) == 1) {
                stack.push(aux.remove());
            }
        }

        while (!stack.empty()) {
            aux.add(stack.pop());
        }

        while (!aux.isEmpty()) {
            stack.push(aux.remove());
        }

        return min;

    }

下面是我在main方法中的测试代码。

代码语言:javascript
运行
复制
public static void main(String[] args) {
        // store some dates so they can be reused
        CalendarDate[] store = {new CalendarDate(1,2,10), new CalendarDate(1,1,10), new CalendarDate(12,30,10)};
        Stack<CalendarDate> testAll = new Stack<CalendarDate>();
        for (CalendarDate i: store) {
            testAll.push(i); // build a Stack
        }
        for (int i = 1;i <= 9;i++) {
            testAll.push(new CalendarDate(1,1,10));
        }
        System.out.println(Chapter14.removeMin(testAll));
    }

正如您所看到的,我使用1/1/10、1/2/10和12/30/10创建了一个堆栈。在运行removeMin方法后,它应该返回12/30/10,因为它位于1/1/10之前,对吗?好吧,我的输出结果不是这样的,因为我从removeMin得到的结果是1/1/10而不是12/30/10。有人能解释为什么会发生这种情况吗?

EN

Stack Overflow用户

发布于 2018-02-16 11:45:44

如果我错了,请纠正我,但是日期似乎是mm/dd/yy格式。如果是这样,那么日期是:2010年1月2日

2010年1月1日

2010年12月30日

紧随其后的是2010年1月1日的9份

因为1月1日在所有其他日期之前,所以1月1日的一份拷贝应该被删除。要测试这一点,您可以尝试循环removeMin,直到堆栈为空。它应该从删除1月1日的10个副本开始,然后是1月2日,最后是12月30日。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48819169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档