大家好,所以我想编写一个代码来执行以下操作: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}
但这对我不起作用:(这是代码,我已经准备好接受任何建议
public static Stack myStack ( Stack A , Stack B) {
Stack D = new Stack();
while(!A.isEmpty()&&!B.isEmpty())
{
if (A.top>B.top){
A.pop();
D.push(A.pop());
} else {
B.pop();
D.push(B.pop());
}
}
return D;
}
下面是stack类:
public class Stack {
private Object [ ] theArray;
public int top;
private static final int DEFAULT_CAPACITY = 10;
//constructor
public Stack( ) {
theArray = new Object[ DEFAULT_CAPACITY ];
top = -1;
}
public boolean isEmpty( ) {
return top == -1;
}
public void makeEmpty( ) {
top = -1;
}
public Object peek( ) {
if( isEmpty( ) )
throw new UnderflowException( "Stack is Empty" );
return theArray[ top ];
}
public Object pop( ) {
if( isEmpty( ) )
throw new UnderflowException( "Stack is Empty" );
return theArray[ top-- ];
}
public void push( Object x ) {
if( top + 1 == theArray.length )
doubleArray( );
theArray[ ++top ] = x;
}
private void doubleArray( ) {
Object [ ] newArray;
newArray = new Object[ theArray.length * 2 ];
for( int i = 0; i < theArray.length; i++ )
newArray[ i ] = theArray[ i ];
theArray = newArray;
}
public class UnderflowException extends RuntimeException {
public UnderflowException( String message ) {
super( message );
}
公共堆栈MyStack(堆栈A,堆栈B){
堆栈C=新堆栈();
while(!A.Empty()&&!B.Empty()){
if(A.empty())
while(!b.empty())c.push(b.pop());
if(B.empty())
while(!c.empty())d.push(c.pop());
返回D;
}
本文向大家介绍JAVA中堆、栈,静态方法和非静态方法的速度问题,包括了JAVA中堆、栈,静态方法和非静态方法的速度问题的使用技巧和注意事项,需要的朋友参考一下 一、堆和栈的速度性能分析 堆和栈是JVM内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内容,存储空间大小,存储速度这几个方面来理解的,但是关于堆和栈的存储速度,只知道堆存储速度慢,栈存储速度快,
问题内容: 嗨,我正在尝试使用另一个空堆栈反转堆栈(我自己编写了一个堆栈)。由于某种原因,它无法正常工作。谁能帮我这个 ? 问题答案: while(!stack1.isEmpty()){ Integer value = (Integer)stack1.pop(); System.out.println(value); reverse.push(value); }
对于下面的输入,我得到一个StackOverflow错误。你们能帮我解释一下吗,以及如何在我的代码中解决这个问题。
我不断得到以下编译错误: ===============[Build HelloWorld Debug]============================“C:\程序文件\jetbrains\clion 2018.3.1\bin\cmak\win\bin\cmake.exe”--构建C:\users\ssez\clionprojects\HelloWorld\cmake-build-debu
问题内容: 这是声明Java数组的常用方法: 但是此数组正在使用堆空间。有没有一种方法可以使用像c ++这样的堆栈空间来声明数组? 问题答案: 一言以蔽之。 存储在堆栈中的唯一变量是基元和对象引用。在您的示例中,引用存储在堆栈上,但它引用堆上的数据。 如果由于要确保清理内存而问来自C ++的问题,请阅读有关垃圾回收的信息。简而言之,Java自动处理清理堆中的内存以及堆栈中的内存。
我来自C/C++背景,在这里一个进程内存分为: null 我想把我的注意力集中在这一点上,当我阅读JVM中的堆和堆栈时,我们是在谈论堆栈和堆的概念吗?并且整个JVM的实际内存驻留在堆上(这里指的是堆的C++概念)?