堆栈的动态空间分配(JAVA)

时间:2013-03-12 12:47:01

标签: java oop dynamic stack

我在Data Structures&amp ;;上有一个编程任务。算法,其中一项任务是

  

“在运行时提示用户输入字符堆栈(M)的大小,并为系统堆栈中的用户堆栈动态分配空间。您可能不会使用”new,malloc“或任何其他运算符,它以任何语言在堆中分配空间。

我是数据结构的新手,并且想知道我编写的以下代码是否符合要求?

代码:

public class DynamicStack
{
    private char[]  array;
    private int     top = 0;    // Array counter
    private int     size;       // Array size

    private final double CAPACITY_CHANGE_RATE = 1.3; // Stack resize ratio

    ....
    All other methods: push(), pop(), peek(), and etc.
    ....

    private void ensureCapacity()
    {
        if (isFull()) {
            size = (int) Math.ceil(size * CAPACITY_CHANGE_RATE);
            char[] oldArray = array;
            array = new char[size];
            System.arraycopy(oldArray, 0, array, 0, oldArray.length);
        }
    }
}

从技术上讲,无论我在非静态方法中使用什么,都必须在新的系统堆栈中分配而不是在堆中,对吗?

1 个答案:

答案 0 :(得分:4)

  

从技术上讲,无论我在非静态方法中使用什么,都必须在新的系统堆栈中分配而不是在堆中,对吗?

如果你问是否所有分配到堆栈上,那么答案(用Java表示)是:否 - 这是不正确的。

例如array = new char[size]从堆中分配char数组。在Java new 总是从堆中分配。

事实上,我认为你不能用Java编写这个程序......考虑到这些限制。试试C或C ++。

相关问题