Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA:SimplePop只返回第一项_Java_Stack - Fatal编程技术网

JAVA:SimplePop只返回第一项

JAVA:SimplePop只返回第一项,java,stack,Java,Stack,我设置了以下代码: public class ListStack implements Stack { private class List { List next; Object object; public List(Object o, List n) { object = o; next = n; } } private List firstItem;

我设置了以下代码:

public class ListStack implements Stack {
    private class List {
        List next;
        Object object;

        public List(Object o, List n) {
            object = o;
            next = n;
        }
    }

    private List firstItem;
    private int size;

    public ListStack() {
        firstItem = new List(null, null);
        size = 0;
    }

    public List getEnd() {
        List endEl = firstItem;

        while (endEl.next != null) {
            endEl = endEl.next;
        }
        return endEl;
    }

    public boolean push(Object o) {
        List e1 = new List(o, null);
        this.getEnd().next = e1;
        size++;
        return true;
    }

    public Object pop() {
        if (this.firstItem.next == null) {
            return null;
        } else {
            List endEl;
            List tempEl;

            endEl = this.getEnd();
            tempEl = firstItem;
            while (tempEl.next != endEl) {
                tempEl = tempEl.next;
            }
            tempEl.next = null;
            size--;
            return tempEl.object;
        }
    }

    public int size() {
        return size;
    }

    public static void main(String[] args) {
        Stack s = new ListStack();

        Object test = new Object();
        Object test2 = new Object();

        System.out.println("pushing Object test to List: " + s.push(test));
        System.out.println("pushing Object test2 to List: " + s.push(test2));

        System.out.println("popping Object from List: " + s.pop());
        System.out.println("popping Object from List: " + s.pop());
        System.out.println("popping Object from List: " + s.pop());
    }
}
还有这个:

 public interface Stack {  
     public int size();
     public boolean push(Object o);
     public Object pop();
 }

但它只给了我第一个对象和两个“null”,但它应该给我两个对象:(我的错误在哪里?它要求最后一个项目,并将其返回(.object)但是只返回第一个对象地址

您的代码太冗长了。堆栈是一种可以有效地推送和弹出元素的数据结构。但是您的代码必须在两个操作中遍历整个堆栈(即,以O(n)而不是O(1)时间运行)

在列表中添加前缀比添加后缀更有效

高效推送的示例:

public void push(Object o) {
    firstItem = new List(o, firstItem);
    size++;
}

你的代码太冗长了。堆栈是一种可以有效地推送和弹出元素的数据结构。但是你的代码必须在两个操作中遍历整个堆栈(即在O(n)而不是O(1)时间内运行)

在列表中添加前缀比添加后缀更有效

高效推送的示例:

public void push(Object o) {
    firstItem = new List(o, firstItem);
    size++;
}

我想你的
pop()
函数应该返回的是
endEl.object

我想你的
pop()函数
函数应该返回的是
endEl.object

错误#1:发布了代码链接而不是相关代码…有人能把评论从德语翻译成英语吗?@WChargin在编辑中删除了评论,它们是标准的“此方法的作用”类型评论。嗨!你的
pop()不应该吗
function return
endEl.object
?@choice_sk:我认为这就是解决方案,试着写一个答案:)错误#1:发布了代码链接而不是相关代码…有人能把评论从德语翻译成英语吗?@WChargin在编辑中删除了评论,它们是标准的“此方法的作用”输入评论。嗨!你的
pop()
函数不应该返回
endEl.object
?@choice\u-sk:我认为这就是解决方案,试着写一个答案:)