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

Posted seraph1999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的算法日志:数据结构之栈相关的知识,希望对你有一定的参考价值。

  • 栈(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 }

 

以上是关于我的算法日志:数据结构之栈的主要内容,如果未能解决你的问题,请参考以下文章

数据结构之栈

浅谈PHP数据结构之栈

java数据结构与算法之栈(Stack)设计与实现

数据结构和算法之栈和队列二:栈的压入,弹出序列

数据结构和算法之栈和队列一:两个栈模拟一个队列以及两个队列模拟一个栈

JAVA数据结构与算法之栈~ 中缀表达式转换为后缀表达式