我要用java实现一个栈,基本操作就是出栈入栈。请问如何实现效率比较高。

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
mengvlog 阅读 8 次 更新于 2025-07-20 03:22:12 我来答关注问题0
  • import java.util.Stack;public class UsingStack { public static void main(String[] args) { //构造栈对象,使用类型限制,只能存储Integer数据 Stack s = new Stack();//1、2、3依次入栈 s.push(1);s.push(2);s.push(3);//3、2、1依次出栈 System.out.println(s...

  •  百度网友ac7b053 求助!如何用Java编写一个栈

    可以利用LinkedList 来写一个栈. 例如 import java.util.* ;public class testStack{ private LinkedList list = new LinkedList() ;public void push(Object o ){ try{ list.addFirst( o ) ;}catch(Exception e){ } } public Object pop(){ return list.removeFirst() ;} public Object top(...

  • 小锄头andrew 跪求用JAVA语言实现一个栈和一个队列,数据元素为double型。。。具体在问题补充里

    public interface MyStack {/** * 判断栈是否为空 */boolean isEmpty();/** * 清空栈 */void clear();/** * 栈的长度 */int length();/** * 数据入栈 */boolean push(T data);/** * 数据出栈 */T pop();}public class MyArrayStack implements MyStack {private O...

  • Stack.java import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Stack { private int[] data; private int index; private Lock lock; private Condition moreSpace; private Condition moreEel...

  •  mzocean 我学的是java版的数据结构,如何使用一个栈,将一个十进制数转化成二进制呢?急需高手解答

    import java.util.*;public class To2Test{ int ten;Stack two=new Stack();To2Test(){ System.out.println("输入一个十进制数:");Scanner sr=new Scanner(System.in);ten=sr.nextInt();while(ten!=0){ int i=ten%2;ten/=2;two.push(i);} while(!two.isEmpty(...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部