import java.util.EmptyStackException;import java.util.Vector;public class UsingStack{ public static void main(String[] args){ //构造栈对象,使用类型限制,只能存储Integer数据 MyStack s = new MyStack();//1、2、3依次入栈 s.push(1);s.push(2);s.push(3);//3...
我要用java实现一个栈,基本操作就是出栈入栈。请问如何实现效率比较高。
//这是JDK提供的栈
import java.util.Stack;
public class UsingStack {
public static void main(String[] args) {
//构造栈对象,使用类型限制,只能存储Integer数据
Stack<Integer> s = new Stack<Integer>();
//1、2、3依次入栈
s.push(1);
s.push(2);
s.push(3);
//3、2、1依次出栈
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}
//这是我写的顺序结构的栈
import java.util.EmptyStackException;
import java.util.Vector;
public class UsingStack{
public static void main(String[] args){
//构造栈对象,使用类型限制,只能存储Integer数据
MyStack<Integer> s = new MyStack<Integer>();
//1、2、3依次入栈
s.push(1);
s.push(2);
s.push(3);
//3、2、1依次出栈
System.out.println(s.pop());
System.out.println(s.pop());
System.out.println(s.pop());
}
}
/**
* 栈类
* @author developer_05
* @param <T>
*/
class MyStack<T> extends Vector<T>{
/**
* 构造方法
*/
public MyStack(){
}
/**
* 入栈方法
* @param item 待入栈的元素
* @return 返回入栈的元素
*/
public T push(T item) {
addElement(item);
return item;
}
/**
* 出栈方法(同步处理)
* @return 返回出栈元素
*/
public synchronized T pop() {
T obj;
int len = size();
if (len == 0)
throw new EmptyStackException();
obj = elementAt(len - 1);
removeElementAt(len - 1);
return obj;
}
/**
* 判断栈是否为空的方法
* @return 返回true(栈空)或false(栈非空)
*/
public boolean empty() {
return size() == 0;
}
private static final long serialVersionUID = 1L;
}2012-02-01
linkedlist基于双向链表实现,可以进行堆栈、队列的相关操作;stack基于数组实现,在堆栈基本操作上效率较linkedlist要高。
自己实现的话,使用数组来实现,其实和stack类似。2012-02-01
java里有Stack这个类
基本实现就是靠它了 你要知道自己写的一般没有官方的好
你可以查看它的源代码 然后自己在一些基础上改改2012-02-01
java的list的子类里面有个叫vector,这个下面有个叫做stack,可以实现!你去看 看看2012-02-01