• 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 }
    复制代码
  • 相关阅读:
    自动化骨架屏生成思路
    npm查看包版本
    icon最佳实践
    node多进程模块
    node环境清空控制台的代码
    commonjs规范
    package.json中的devDependencies和dependencies有啥区别?
    delphi ExecWB
    delphi execCommand
    delphi 带历史信息的菜单
  • 原文地址:https://www.cnblogs.com/gyadmin/p/8058761.html
Copyright © 2020-2023  润新知