【问题标题】:Converting stack from array to arrayList将堆栈从数组转换为数组列表
【发布时间】:2014-03-13 03:47:42
【问题描述】:

我有一个使用数组的堆栈实现,我正在尝试将其转换为数组列表。数组在顶部,arrayList 在底部。这 2 段代码做同样的事情吗?我也有两段 pop 方法一个数组和一个数组列表。但是对于这个我得到一个错误,即 temp 尚未初始化并且找不到符号 temp。感谢任何帮助。

 USING ARRAY
public void push(T value)
    {     
        if(size==values.length)
            expandCapacity();

        values[size] = value;
        size++;
    }


 USING ARRAYLIST
 public void push(T value)
    {

        values.add(value);

        size++;
    }



USING ARRAY
public T pop()
    {    
        if(isEmpty())
            throw new RuntimeException("Attempt to pop from empty stack");

        size--;
        T temp = values[size];
        values[size] = null;
        return temp;
    }

 USING ARRAYLIST

public T pop()
    {
        T temp;

        if(isEmpty())
            throw new RuntimeException("Attempt to pop from empty stack");

        size--;

        values.add(temp);

         values.temp = null;
        //values[size] = null;
        return temp;

    }

【问题讨论】:

    标签: java arrays arraylist stack


    【解决方案1】:

    您的数组和ArrayList 版本的push 方法看起来正确。你的pop 看起来不错。但是,ArrayListpop 需要工作。

    您减少size,这很好,但您尝试添加temp(未初始化),这是没有意义的。

    您需要调用remove, passing the index size,这将返回您可以在pop 方法中返回的必要项目。

    【讨论】:

    • 把那个叫出来;在这种情况下甚至没有意义。您只需致电remove
    • 看起来不错。您是否在访问数组或调用 get 之前检查空堆栈,就像您已经在检查 pop 一样?
    • 您遗漏了堆栈跟踪中非常重要的部分——异常类型和异常消息。
    • 你必须自己调试它;没有看到您的 peek 方法,我无法说出发生这种情况的原因。
    猜你喜欢
    • 2011-08-13
    • 1970-01-01
    • 2016-03-06
    • 2022-07-26
    • 2011-11-26
    • 1970-01-01
    相关资源
    最近更新 更多