这是堆栈还是堆栈模拟? 包java.util; 公众的 类堆栈扩展向量{ 公共堆栈(){ } 公共电子推送(电子项目){ 增编(项目); 退货项目; } 公共同步E-pop(){ E obj; int len=大小(); obj=peek(); removeElementAt(len-1); 返回obj; } 公共同步E peek(){ int len=大小(); 如果(len==0) 抛出新的EmptyStackException(); 返回元素at(len-1); } 公共同步整数搜索(对象o){ int i=最后的指数f(o); 如果(i>=0){ 返回大小()-i; } 返回-1; } 私有静态最终长serialVersionUID=1224463164541339165L; }
上面是堆栈的java源代码。 我意识到它只是在模仿一个堆栈,而不是一个真正的堆栈这是堆栈还是堆栈模拟? 包java.util; 公众的 类堆栈扩展向量{ 公共堆栈(){ } 公共电子推送(电子项目){ 增编(项目); 退货项目; } 公共同步E-pop(){ E obj; int len=大小(); obj=peek(); removeElementAt(len-1); 返回obj; } 公共同步E peek(){ int len=大小(); 如果(len==0) 抛出新的EmptyStackException(); 返回元素at(len-1); } 公共同步整数搜索(对象o){ int i=最后的指数f(o); 如果(i>=0){ 返回大小()-i; } 返回-1; } 私有静态最终长serialVersionUID=1224463164541339165L; },java,stack,Java,Stack,上面是堆栈的java源代码。 我意识到它只是在模仿一个堆栈,而不是一个真正的堆栈 我说这只是对Stack的模仿,而不是真实的,对吗 如果我可以这样说,并且我想从头开始构建它,我会怎么做?(固定大小的数组或反过来使用列表(单/双链接)的arraylist) 没有“真正的堆栈”,堆栈只是一个想法,一个所谓的。它支持推送和弹出两种操作,元素的顺序定义为后进先出(LIFO)。除了java.util.Stack(基于向量,基于数组),还有java.util.LinkedList(一个双链接列表),它也支持
上面是一个链接,指向grepcode中名为stack的所有内容。你到底在问什么?
java.util.Stack
是堆栈数据结构的实现。我不确定你所说的“模拟”是什么意思。我的意思是,在基本层面上,我认为堆栈应该运行在数组上,而数组反过来又运行在对内存的引用上。因此,上面的类实现了列表和集合。下面是我上面的问题。上面是一个链接,指向所有在grepcode中被称为stack的东西。你到底在问什么?java.util.Stack
是堆栈数据结构的实现。我不确定你所说的“模拟”是什么意思。我的意思是,在基本层面上,我认为堆栈应该运行在数组上,而数组反过来又运行在对内存的引用上。因此,上面的类实现了列表和集合。从这里,我的问题如下。我理解。下面是我的参数java.util.Stack实现了链表,链表主要是队列。因此,这种抽象数据类型应该有独立的实现。但这并不是这里发生的事情。因此我说它是在模仿堆栈。不管它是否主要是X,甚至也不可能说LinkedList主要是队列、堆栈、数据块还是列表——都是这些,因为你可以将其用作所有这些。如果LinkedList是在“模仿堆栈”,那么所有的堆栈实现都是“模仿堆栈”。如果LinkedList“是堆栈”,则所有堆栈实现都是堆栈你所做的区分没有意义,因为堆栈只是一个想法,一个合同,一个协议,如果你愿意的话。您可以使用打印机、机械臂和扫描仪实现堆栈,这将是非常复杂和低效的,但您可以,而且它仍然是/模拟堆栈,与LinkedList完全相同。谢谢!所以,这些只是在必要的情况下实施的想法。我理解。下面是我的参数java.util.Stack实现了链表,链表主要是队列。因此,这种抽象数据类型应该有独立的实现。但这并不是这里发生的事情。因此我说它是在模仿堆栈。不管它是否主要是X,甚至也不可能说LinkedList主要是队列、堆栈、数据块还是列表——都是这些,因为你可以将其用作所有这些。如果LinkedList是在“模仿堆栈”,那么所有的堆栈实现都是“模仿堆栈”。如果LinkedList“是堆栈”,则所有堆栈实现都是堆栈你所做的区分没有意义,因为堆栈只是一个想法,一个合同,一个协议,如果你愿意的话。您可以使用打印机、机械臂和扫描仪实现堆栈,这将是非常复杂和低效的,但您可以,而且它仍然是/模拟堆栈,与LinkedList完全相同。谢谢!因此,这些只是以任何必要的方式实施的想法。
package java.util;
public
class Stack<E> extends Vector<E> {
public Stack() {
}
public E push(E item) {
addElement(item);
return item;
}
public synchronized E pop() {
E obj;
int len = size();
obj = peek();
removeElementAt(len - 1);
return obj;
}
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}
public synchronized int search(Object o) {
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}
private static final long serialVersionUID = 1224463164541339165L;
}