我的算法日志:数据结构之栈

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

java代码实现:

 1 package com.guohao.arithmetics;
 2 
 3 import java.lang.reflect.Array;
 4 
 5 /**
 6  * 栈
 7  */
 8 public class Stack<T> {
 9     private T[] data;  //储存栈内元素的数组
10     private int capacity;  //栈的容量(栈内元素数量的最大值)
11     private int size;  //栈的大小(栈内现有元素的数量)
12     private int top;  //栈顶标志器
13 
14     public Stack(Class<T> type, int capacity){
15         //为了保证类型安全,Java中不允许直接用泛型声明数组,如:"dataArray = new T[capacity]"是错误的!
16         data = (T[])Array.newInstance(type, capacity);
17         this.capacity = capacity;
18         size = 0;
19         top = -1;
20     }
21 
22     /**
23      * 入栈
24      * @param element
25      * @return
26      */
27     public boolean push(T element){
28         if(isFull()){
29             return false;
30         }
31 
32         data[++top] = element;
33         size++;
34         return true;
35     }
36 
37     /**
38      * 出栈
39      * @return
40      */
41     public T pop(){
42         if(isEmpty()){
43             return null;
44         }
45 
46         size--;
47         return data[top--];
48     }
49 
50     /**
51      * 判断是否栈满
52      * @return
53      */
54     public boolean isFull(){
55         return capacity==size;
56     }
57 
58     /**
59      * 判断是否栈空
60      * @return
61      */
62     public boolean isEmpty(){
63         return size==0;
64     }
65 
66     //getter & setter
67     public T[] getData() {
68         return data;
69     }
70 
71     public void setData(T[] data) {
72         this.data = data;
73     }
74 
75     public int getCapacity() {
76         return capacity;
77     }
78 
79     public void setCapacity(int capacity) {
80         this.capacity = capacity;
81     }
82 
83     public int getSize() {
84         return size;
85     }
86 
87     public void setSize(int size) {
88         this.size = size;
89     }
90 
91     public int getTop() {
92         return top;
93     }
94 
95     public void setTop(int top) {
96         this.top = top;
97     }
98 }

 

posted @ 2020-04-27 23:56  凤青  阅读(154)  评论(0编辑  收藏  举报