我们可以在java中创建自己的堆栈数据结构实现而不使用数组或列表吗?

我们可以在java中创建自己的堆栈数据结构实现而不使用数组或列表吗?,java,data-structures,Java,Data Structures,我在面试中被问到一个问题,如下所示 我们可以实现自己的堆栈数据结构而不使用数组、列表甚至节点类型吗 有可能吗?您可以使用调用堆栈,但在大多数情况下,这并不有用 假设您有一个交互式应用程序,用户可以在其中选择推送或弹出元素 您将拥有一个包含单个局部变量的方法,该局部变量保存堆栈的顶部元素 该方法将要求用户选择是弹出最后一个元素还是推送新元素 如果用户选择push,该方法将对自身进行递归调用,将push元素作为参数传递(该参数将存储在被调用方法的局部变量中) 如果用户选择pop,该方法将向调用方法返

我在面试中被问到一个问题,如下所示

我们可以实现自己的堆栈数据结构而不使用数组、列表甚至节点类型吗


有可能吗?

您可以使用调用堆栈,但在大多数情况下,这并不有用

假设您有一个交互式应用程序,用户可以在其中选择推送或弹出元素

您将拥有一个包含单个局部变量的方法,该局部变量保存堆栈的顶部元素

该方法将要求用户选择是弹出最后一个元素还是推送新元素

如果用户选择push,该方法将对自身进行递归调用,将push元素作为参数传递(该参数将存储在被调用方法的局部变量中)

如果用户选择pop,该方法将向调用方法返回其局部变量

下面是一些伪代码:

public static Object stack (Object element)
{
    Object top = element;

    int input = 0;
    while (input != 2) {
        input = ... // get user input - 1 for push 2 for pop
        if (input == 1) {
            Object newElement = ... // get input from user
            Object poppedElement = stack (newElement); // push the new element
        } 
    }
    return top; // pop the top of the stack
}

如果不能使用任何集合或数组,可以使用一个文件,该文件的每一行都可以是推送到堆栈(文件)的元素,并给出堆栈后进先出的原则,那么文本文件的第一行需要在弹出时检索,否则推送的元素将添加到文本文件的第一行。

是。事实上,Java有一个独特的功能。你尝试过什么?当然你可以使用任何数据结构类。在大多数情况下,您只需要添加一些指向其他元素的指针。是的,但它的核心是一个链表……老实说,这似乎可以更好地工作。“公共静态对象堆栈(对象元素)”这将是该方法的正确签名。但是这个实现只包含一个元素,或者我遗漏了什么?@aurelianus我说它是pdeudo代码:)修复了返回类型。它可以容纳调用堆栈中的任意多个元素,以便对堆栈方法进行递归调用。如果用户键入1并输入新元素,然后重复该过程10次,
stack
将被递归调用10次,其中每个元素中的局部变量都包含一个不同的元素。感谢您的详细介绍:)非常感谢您的输入。非常欢迎您!