当前位置: 首页 > 知识库问答 >
问题:

JAVA中使用堆栈编写方法的问题

芮琛
2023-03-14

大家好,所以我想编写一个代码来执行以下操作: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 );
       }

共有1个答案

谷善
2023-03-14

公共堆栈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++概念)?