如何将以下伪代码转换为数组而不是堆栈。该算法旨在构造给定特定输入的有向图:
- 从右到左扫描公式调用堆栈上的符号,直到 2 个连续的节点符号出现在顶部。
- 从堆栈中弹出这 2 个节点符号和它们下方的“*”。从第一个符号到第二个符号画一条边。
- 将第一个符号压入堆栈。
- 继续执行步骤 1-3,直到处理完公式。
这是一个示例输入和输出:
输入:
***ABCD
输出:
*AB, *AC, *AD
'*'代表一条边
所有输入都将使用扫描仪完成。
最佳答案
可以使用数组和“堆栈索引”的索引对有限大小的堆栈进行建模。
从 -1
开始堆栈索引。在推送操作中,递增堆栈索引,并将值存储在数组的相应索引处。在弹出操作中,使用堆栈索引处的值,并在获取值后递减索引。要访问堆栈的顶部,请读取堆栈索引处的项目。
关于Java:如何将堆栈的伪代码转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13293180/