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