• 大小: 366KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2022-08-09
  • 语言: Java
  • 标签: java  stack    

资源简介

用java写的简单栈的实现,欢迎大家使用

资源截图

代码片段和文件信息

package lang;

import java.io.Serializable;
import java.util.Arrays;

/** 
 * @ClassName: ArrayStack
 * @Description: 顺序栈
 * @date 2014年1月20日 上午8:47:19
 * @param 
 */
public class ArrayStack implements Serializable {

  /**
   * @Fields serialVersionUID : TODO
   */
  private static final long serialVersionUID = 74027006708386243L;

  private object[] elementData;//定义一个数组用于保存顺序栈的元素

  private int size = 0;//保存顺序栈中元素的当前个数

  private int capacity;//保存数组的长度

  public ArrayStack() {
    elementData = new object[10];//默认长度为10的栈    
  }

  public ArrayStack(int initSize) {
    elementData = new object[initSize];//默认长度为10的栈
  }

  public ArrayStack(T element) {
    this();
    elementData[0] = element;
    size++;
  }

  public ArrayStack(T element int initSize) {
    this.capacity = initSize;
    elementData = new object[capacity];
    elementData[0] = element;
    size++;
  }

  /**
   * @title: size     
   * @Description: 栈长度    
   * @return
   */
  public int size() {
    return size;
  }

  /**
   * @title: push     
   * @Description: 入栈    
   * @param element
   */
  public void push(T element) {
    ensureCapacity(size + 1);
    elementData[size++] = element;
  }

  private void ensureCapacity(int minCapacity) {
    //如果数组的原有长度小于目前所需的长度
    int oldCapacity = elementData.length;
    if (minCapacity > oldCapacity) {
      int newCapacity = (oldCapacity * 3) / 2 + 1;
      if (newCapacity < minCapacity)
        newCapacity = minCapacity;
      // minCapacity is usually close to size so this is a win:
      elementData = Arrays.copyOf(elementData newCapacity);
    }

  }

  /**
   * @title: pop     
   * @Description: 出栈    
   * @return
   */
  public T pop() {
    if (!isEmpty()) {
      T oldValue = (T) elementData[size - 1];
      //释放栈顶元素
      elementData[--size] = null;
      return oldValue;
    } else {
      return null;
    }
  }

  /**
   * @title: peek     
   * @Description: 返回栈顶元素,但不删除栈顶元素    
   * @return
   */
  public T peek() {
    if (!isEmpty()) {
      return (T) elementData[size - 1];
    } else {
      throw new IndexOutOfBoundsException(“空栈异常“);
    }
  }

  /**
   * @title: empty     
   * @Description: 判断顺序栈是否为空栈    
   * @return
   */
  public boolean isEmpty() {
    return size == 0;
  }

  /**
   * @title: clear     
   * @Description: 清空顺序栈
   */
  public void clear() {
    //将底层数组所有元素赋为null
    Arrays.fill(elementData null);
    size = 0;
  }

  public String toString() {
    if (size == 0) {
      return “[]“;
    } else {
      StringBuilder sb = new StringBuilder(“[“);
      for (int i = size - 1; i > -1; i--) {
        sb.append(elementData[i].toString() + “ “);
      }
      int len = sb.length();
      return sb.delete(len - 2 len).append(“]“).toString();
    }
  }
  
  public static void main(String[] args)   
  {  
      ArrayStack stack =  
       

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        493  2017-07-04 14:49  Stack\.classpath

     文件        381  2017-07-04 13:52  Stack\.project

     文件        598  2017-07-04 10:50  Stack\.settings\org.eclipse.jdt.core.prefs

     文件       3889  2017-07-04 15:57  Stack\bin\lang\ArrayStack.class

     文件       1975  2017-07-04 15:57  Stack\bin\lang\ArrayStack2.class

     文件       1132  2017-07-04 15:57  Stack\bin\lang\linkStack$Node.class

     文件       3132  2017-07-04 15:57  Stack\bin\lang\linkStack.class

     文件       1460  2017-07-04 15:57  Stack\bin\stack\apply\Conversion.class

     文件       1770  2017-07-04 15:57  Stack\bin\stack\apply\LineEdit.class

     文件      45024  2017-07-04 14:49  Stack\lib\hamcrest-core-1.3.jar

     文件      53070  2017-07-04 14:49  Stack\lib\hamcrest-library-1.3.jar

     文件     314932  2017-07-04 14:42  Stack\lib\junit-4.12.jar

     文件       3872  2017-07-04 14:03  Stack\src\lang\ArrayStack.java

     文件       1478  2017-07-04 14:05  Stack\src\lang\ArrayStack2.java

     文件       2919  2017-07-04 14:29  Stack\src\lang\linkStack.java

     文件       1064  2017-07-04 14:46  Stack\src\stack\apply\Conversion.java

     文件       1088  2017-07-04 14:55  Stack\src\stack\apply\LineEdit.java

     目录          0  2017-07-04 15:57  Stack\bin\stack\apply

     目录          0  2017-07-04 14:54  Stack\src\stack\apply

     目录          0  2017-07-04 15:57  Stack\bin\lang

     目录          0  2017-07-04 15:57  Stack\bin\stack

     目录          0  2017-07-04 14:11  Stack\src\lang

     目录          0  2017-07-04 14:39  Stack\src\stack

     目录          0  2017-07-04 10:50  Stack\.settings

     目录          0  2017-07-04 15:57  Stack\bin

     目录          0  2017-07-04 14:49  Stack\lib

     目录          0  2017-07-04 14:39  Stack\src

     目录          0  2017-07-04 14:41  Stack

----------- ---------  ---------- -----  ----

               438277                    28

............此处省略1个文件信息

评论

共有 条评论