zoukankan      html  css  js  c++  java
  • 自定义栈

     1 public class Demo {
     2     public static void main(String[] args) {
     3         MyStack stack = new MyStack();
     4         stack.push("123");
     5         stack.push("abc");
     6         stack.push("hello");
     7         stack.push("wwww");
     8         System.out.println("返回栈的长度为:" + stack.getSize());
     9         System.out.println("判断栈是否为空:" + stack.isEmpty());
    10         System.out.println("判断栈是否为满:" + stack.isFull());
    11         System.out.println("返回栈中元素的个数为:" + stack.getElementCount());
    12         System.out.println("返回栈顶元素为:" + stack.peek());
    13         System.out.println("返回栈中元素的个数为:" + stack.getElementCount());
    14         System.out.println("出栈的元素为:" + stack.pop());
    15         System.out.println("出栈的元素为:" + stack.pop());
    16         System.out.println("返回栈中元素的个数为:" + stack.getElementCount());
    17         System.out.println("出栈的元素为:" + stack.pop());
    18         System.out.println("出栈的元素为:" + stack.pop());
    19         System.out.println("返回栈中元素的个数为:" + stack.getElementCount());
    20         System.out.println("判断栈是否为空:" + stack.isEmpty());
    21         System.out.println("判断栈是否为满:" + stack.isFull());
    22         System.out.println("返回栈的长度为:" + stack.getSize());
    23         System.out.println("返回栈中元素的个数为:" + stack.getElementCount());
    24     }
    25 }
    26 // 自定义栈
    27 class MyStack {
    28     // 利用数组来完成元素的存放
    29     String[] str = null;
    30     // 栈顶指针
    31     private int top;
    32     // 栈中元素的个数
    33     private int count;
    34     public MyStack() {
    35         this(10);
    36     }
    37     public MyStack(int size) {
    38         // 实例化String[]来存放元素
    39         str = new String[size];
    40         // 栈顶指针为-1
    41         top = -1;
    42         // 栈中元素初始为0个
    43         count = 0;
    44     }
    45     // 返回栈中元素的个数
    46     public int getElementCount() {
    47         return count;
    48     }
    49     // 返回栈长度
    50     public int getSize() {
    51         return str.length;
    52     }
    53     // 判断栈是否为满
    54     public boolean isFull() {
    55         return top == (str.length - 1);
    56     }
    57     // 判断栈是否为空
    58     public boolean isEmpty() {
    59         return top == -1;
    60     }
    61     // 入栈操作
    62     public void push(String data) {
    63         if (isFull()) {
    64             throw new RuntimeException("栈已满!");
    65         } else {
    66             str[++top] = data;
    67             count++;
    68         }
    69     }
    70     // 出栈操作
    71     public String pop() {
    72         if (isEmpty()) {
    73             throw new RuntimeException("栈是空的!");
    74         } else {
    75             count--;
    76             return str[top--];
    77         }
    78     }
    79     // 返回栈顶元素
    80     public String peek() {
    81         if (isEmpty()) {
    82             throw new RuntimeException("栈是空的!");
    83         } else {
    84             return str[top];
    85         }
    86     }
    87 }

      执行结果:

     1 返回栈的长度为:10
     2 判断栈是否为空:false
     3 判断栈是否为满:false
     4 返回栈中元素的个数为:4
     5 返回栈顶元素为:wwww
     6 返回栈中元素的个数为:4
     7 出栈的元素为:wwww
     8 出栈的元素为:hello
     9 返回栈中元素的个数为:2
    10 出栈的元素为:abc
    11 出栈的元素为:123
    12 返回栈中元素的个数为:0
    13 判断栈是否为空:true
    14 判断栈是否为满:false
    15 返回栈的长度为:10
    16 返回栈中元素的个数为:0
  • 相关阅读:
    C#操作REDIS例子
    A C# Framework for Interprocess Synchronization and Communication
    UTF8 GBK UTF8 GB2312 之间的区别和关系
    开源项目选型问题
    Mysql命令大全——入门经典
    RAM, SDRAM ,ROM, NAND FLASH, NOR FLASH 详解(引用)
    zabbix邮件报警通过脚本来发送邮件
    centos启动提示unexpected inconsistency RUN fsck MANUALLY
    rm 或者ls 报Argument list too long
    初遇Citymaker (六)
  • 原文地址:https://www.cnblogs.com/void0720/p/4778086.html
Copyright © 2011-2022 走看看