自定义栈
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