首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

数据结构-Stack:运用Java实现Stack

2013-07-08 
数据结构-Stack:使用Java实现Stackpackage org.cgz.studyimport java.io.Serializableimport java.util.

数据结构-Stack:使用Java实现Stack
package org.cgz.study;import java.io.Serializable;import java.util.EmptyStackException;import java.util.Vector;/** * Java实现Stack * 可以通过继承或组合ArrayList(Vector)来实现栈 * @author Administrator * @param <E> */public class MyStack<E> implements Cloneable,Serializable{//JDK中的栈是通过继承Vector来实现的. //为啥要用Vector来实现? 因为栈的操作都是在栈顶.Vector底层是数组.栈的操作可以在数组的末端进行的.而使用数组线性表要比使用链表操作简单效率也高点.//相比之下,使用组合可能会更好一些,因为它可以定义一个全新的栈类,而不需要继承数组线性表中不必要和不合适的方法.private Vector<E> list = new Vector<E>();/** * 在栈顶压入元素 * @param e */public E push(E e) {list.addElement(e);return e;}/** * 弹出栈顶元素 * @param e * @return */public synchronized E pop() {E e;intsize = size();e = peek();list.removeElementAt(size - 1);return e;}/** * 获取栈顶元素 * @return */public synchronized E peek() {intsize = size();if (size == 0) {throw new EmptyStackException();}return list.elementAt(size - 1);}/** * 查找 * @param e * @return */public synchronized int search(E e) {int index = list.lastIndexOf(e);if (index >= 0) { return size() - index;}return -1; }/** * 栈的大小 * @return */public int size() {return list.size();}/** * 栈是否为空 * @return */public boolean isEmpty() {return size() == 0;}private static final long serialVersionUID = 5476861602556454675L;}

?

热点排行