自定义栈

 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

 

posted @ 2015-09-02 11:27  独年荒岛  阅读(154)  评论(0编辑  收藏  举报