我正在做这个练习,在这个练习中,我必须交替显示堆栈顶部的元素,然后是底部的元素,直到它是空的。我仍然发现很难利用递归来解决这些练习,我想知道是否有人可以帮助我。我不能使用循环,只是递归。这是说明:“给定stack_t抽象数据类型及其定义的操作:创建,顶部,推送,弹出,元素(返回堆栈中元素的数量),破坏:完成接收堆栈并显示堆栈中交替启动的项的one_and_one函数用顶部元素,然后用底部元素,直到堆栈是空的”。这就是我想出的:
void one_and_one(stack_t* stack){
if(!stack || elements(stack) == 0) return;
int aux = top(stack);
pop(stack);
one_and_one(stack);
printf("%i\n", aux);
}
在打印底部之前,我还需要弄清楚如何打印顶部的。我将给出一个例子,以便更好地理解它。如果我有以下堆栈(1是最上面的元素):|1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 |输出必须如下:1,7,2,6,3,5,4。不管怎样,谢谢!
如果操作可能是破坏性的——也就是说原始堆栈预计不会保持完整,那么下面是一个算法思想:
下面是一个伪代码:
function one_and_one(stack)
if empty(stack)
return
print (pop(stack)) // Step 1
stack2 = create_stack() // Step 2
copy_stack(stack2, stack) // Step 3
destroy_stack(stack) // Cleanup
one_end_one(stack2) // Step 4
/* This is a helper function for step 3 - recursive as well because no loops allowed*/
function copy_stack(dest, src)
if not empty(src)
push(dest, pop(src))
顺便说一句,我觉得把它想象成一个玩具堆叠金字塔是很方便的,你被要求交替取顶部和底部。你拿另一个“空”金字塔。取第一个金字塔的顶部,然后逐个移动到另一个金字塔。重复第二个金字塔。这也暗示了你可以只使用两个堆栈,而不是每次创建一个。
我正在尝试使用元素构建progressbar。 CSS: 我现在正努力实现每一个其他元素文本都位于:before伪元素之上。现在所有的东西都在before元素下面。我需要改变之间,所以文本不重叠的窗口调整大小。 还有什么我还没考虑过的简单方法吗? 谢谢!
请参阅此小提琴:https://jsfiddle.net/4mxhogmd/1/ 我正在做图表。js如果您在fiddle中看到,您会注意到,在某些情况下,位于条形图顶部的值没有正确显示(超出画布),而我在研究如何在图表上显示数据值时遇到了这个链接。js 但在这里,他们也在同样的情况下使用工具提示来调整条内的文本。我不要这个。 我想要的是,在所有情况下,只在顶部显示值。
以下是完整的问题: 编写一个java方法,它将接受两个排序后的堆栈a和B(最小值在顶部),并返回一个排序后的堆栈D(最小值在顶部)。只允许使用堆栈操作,如pop、push、isEmpty和peek。 示例:假设A={(top)1,4,7,9}和B={(top)2,3,6},那么函数将返回一个新的堆栈D={(top)1,2,3,4,6,7,9} 我写的代码是这样的: 你怎么认为?
问题内容: 在Java中,是否有任何方法可以查看完整的,未截断的堆栈跟踪(例如,通过增加记录的帧数),或者以其他方式查看堆栈跟踪的 底部 ?通常,堆栈跟踪会从顶部截断为1024帧,但是对于堆栈溢出问题,这是毫无价值的,因为您确实需要查看是谁触发了触发递归的调用,位于底部附近。在堆栈 中间 截断会更好,但是显然Sun的JVM不够聪明。 也许甚至一些特定于Sun的特殊标志?我尝试将堆栈大小减小到最小允
我有一个数组包含玩家的名字,我想按照数组的顺序显示每个问题中玩家的名字,例如arrnames['mark','john','jay'],我想和问题1的mark,问题2的john一起显示。 这是我正在尝试的,但我只得到数组中的最后一个值,我如何修复它?
我有一个数组包含玩家的名字,我想按照数组的顺序显示每个问题中玩家的名字,例如arrnames['mark','john','jay'],我想和问题1的mark,问题2的john一起显示。 这是我正在尝试的,但我只得到数组中的最后一个值,我如何修复它?