【发布时间】:2016-09-30 13:01:44
【问题描述】:
所以我一直在从事一项编程任务,该任务涉及采用大小约为 13,000 的堆栈实现并将其转换为链表。该指南基本上是通过顺序扫描链表来填充堆栈(IE尾部将是堆栈的顶部),并且您想使用堆栈重新创建链表。诀窍是你必须使用递归方法来做到这一点。此堆栈类中的唯一方法是 pop(返回并删除顶部元素)和 isEmpty(判断堆栈是否为空)。我有完成工作的代码,但是它需要增加 java 堆栈大小(否则我会得到 StackOverflowError),我觉得这是不允许的。
话虽如此,有谁知道我可以在不增加 java 堆栈大小的情况下使其工作的方法。
堆栈是我标记为 S 的静态字段。Head 应该是链表中的第一个节点,而 steper 只是用于创建其他每个步骤的节点。
这是我目前拥有的代码:
public static void stackToList()
{
int x = 0;
if(S.isEmpty())
{
return;
}
x = S.pop();
stackToList();
if (head == null)
{
head = new ListNode(x, null);
steper = head;
}
else
{
steper.next = new ListNode(x, null);
steper = steper.next;
}
}
提前感谢您的帮助。
【问题讨论】:
-
出于好奇,堆栈中有什么?
-
只有很多整数。没有什么特别的。
-
澄清一下,当您说“堆栈大小”时,您指的是递归调用期间的 Java 调用堆栈吗?因为如果你正在阅读它,你堆叠的“S”不会增加!
-
当我说我增加堆栈大小时,我的意思是在运行配置中添加了一个参数,例如 -Xss2m
标签: recursion