所以我一直在做一个编程任务,涉及到大小约13,000的堆栈实现并将其转换为链表。该指南基本上是通过顺序扫描链表来填充堆栈(IE尾部将是堆栈的顶部),并且您希望使用堆栈重新创建链接列表。诀窍是你必须使用递归方法来做到这一点。这个栈类中唯一的方法是pop(返回并移除顶层元素)和isEmpty(告诉栈是否为空)。我有代码完成工作,但它需要增加java堆栈大小(否则我得到StackOverflowError),我觉得这是不被允许的。递归地将堆栈转换为链表
这是说有没有人知道一种方式,我可能会得到这个工作,而不增加java堆栈大小。
堆栈是一个静态字段,我标记为S.头是什么应该是链接列表中的第一个节点,而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;
}
}
谢谢你的时间提前任何帮助。
出于好奇,堆栈里有什么? – leigero
只是很多整数。没有什么花哨的。 – xtruexwolfx
只是为了澄清,当你说“堆栈大小”是否在递归调用期间引用Java调用堆栈?因为如果你正在阅读它,你的'S'不会增加! – EvenPrime