线性结构--栈

  栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

创建MyStak栈及其方法

 1 package com.feimao.com.feimao.a2.test;
 2 
 3 public class MyStack {
 4     int[] elements;
 5     public MyStack(){
 6         elements = new int[0];
 7     }
 8     //压入元素
 9     public void push(int element){
10         int[] newArr = new int[elements.length + 1];
11         for(int i = 0 ; i < elements.length ; i++){
12             newArr[i] = elements[i];
13         }
14         newArr[elements.length] = element;
15         elements = newArr;
16     }
17     //取出栈顶元素
18     public int pop() {
19         if (elements.length == 0) {
20             throw new RuntimeException("stack is empty");
21         }
22         //取出数组中最后1个元素
23         int element = elements[elements.length - 1];
24         //创建一个新数组
25         int[] newArr = new int[elements.length - 1];
26         //除了最后一个取走的元素,其他元素复制到新数组
27         for (int i = 0; i < elements.length - 1; i++) {
28             newArr[i] = elements[i];
29         }
30         //替换数组
31         elements = newArr;
32         //返回栈顶元素
33         return element;
34     }
35     //查看栈顶元素
36     public int peek(){
37         return elements[elements.length - 1];
38         }
39 
40 
41 
42 
43 }

创建测试类

 1 package com.feimao.com.feimao.a2.test;
 2 
 3 import java.util.Arrays;
 4 
 5 public class MyStackTest {
 6     public static void main(String[] args){
 7         MyStack ms = new MyStack();
 8         for(int i = 0 ; i < 10 ; i++){
 9             ms.push(i);
10         }
11         System.out.println(ms.peek());
12         System.out.println(ms.pop());
13 
14 
15 
16     }
17 }

原文地址:https://www.cnblogs.com/feimaoyuzhubaobao/p/10161586.html