zoukankan      html  css  js  c++  java
  • java栈的实现

    可以采用数组与链表两种方法来实现栈。

     1、用数组实现栈

    复制代码
     1 import java.util.Arrays;
     2 public class MyStack<E>{
     3     private Object[] stack;
     4     private int size; //数组中存储元素的个数
     5     public MyStack(){
     6         stack = new Object[10]; //初始化长度为10
     7     }
     8     //判断堆栈是否为空
     9     public boolean isEmpty(){
    10         return size == 0;
    11     }
    12 
    13     public E peek(){
    14         if(isEmpty()){
    15             return null;
    16         }
    17         return(E) stack[size-1];
    18     }
    19 
    20     public E pop(){
    21         E e = peek();
    22         stack[size-1] = null;
    23         size--;
    24         return e;
    25     }
    26 
    27     public E push(E item){
    28         ensureCapacity(size+1);
    29         stack[size++] = item;
    30         return item;
    31     }
    32 
    33     //判断数组是否已满,若已满,则扩充数组空间
    34     private void ensureCapacity(int size){
    35         int len = stack.length;
    36         if(size > len){//数组已满
    37             int newLen = 10;//每次数组扩充的容量
    38             stack = Arrays.copyOf(stack,newLen);
    39         }
    40     }
    41 }
    //栈的遍历
      while (!myStack.isEmpty()) {
                    System.out.println(myStack.pop());
            }
     
    复制代码

     2、用链表实现栈

    复制代码
     1 class Node{
     2     Node next = null;
     3     int data;
     4     public Node(int data){this.data = data;}
     5 }
     6 
     7 public class Stack<E>{
     8     Node<E> top = null;
     9 
    10     public boolean isEmpty(){
    11         return top == null;
    12     }
    13 
    14     public void push(E data){
    15         Node<E> newNode = new Node<E>(data);
    16         newNode.next = top;
    17         top = newNode;
    18     }
    19 
    20     public E pop(){
    21         if(this.isEmpty())
    22             return null;
    23         E data = top.data;
    24         top = top.next;
    25         return data;
    26     }
    27 
    28     public E peek(){
    29         if(isEmpty()){
    30             return null;
    31         }
    32         return top.data;
    33     }
    34 }
    复制代码
  • 相关阅读:
    ant build 报 warning modified in the future
    JQUERY选择器大全(转载)
    MAVEN实践经验
    Jquery ajax参数设置(转)
    解决WIN7下pl/sql连接弹出空白提示框问题
    getContextPath、getServletPath、getRequestURI的区别
    HTTP协议
    构建接口层快速稳定的质量保证体系
    接口测试流程
    接口测试的意义
  • 原文地址:https://www.cnblogs.com/gyadmin/p/8058761.html
Copyright © 2011-2022 走看看