我在面试中被问到如下问题。
我们可以在不使用数组或列表甚至节点类型的情况下实现自己的Stack Data结构。
有可能吗?
答案 0 :(得分:1)
您可以使用调用堆栈,但这在大多数情况下都没用。
假设您有一个交互式应用程序,用户可以在其中选择推送或弹出元素。
你将拥有一个带有单个局部变量的方法,该变量保存堆栈的顶部元素。
该方法将要求用户选择是弹出最后一个元素还是推送新元素。
如果用户选择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
}
答案 1 :(得分:1)
好吧,如果你不能使用任何集合或数组,你可以使用一个文件,并且该文件的每一行都可以是一个推送到堆栈(文件)的元素,并给出堆栈LIFO的原理,而不是文本文件的第一行需要在pop中检索,或者推送的元素将添加到文本文件的第一行。