我的算法日志:数据结构之栈
标签:tca strong mamicode 线性 一个栈 删除元素 tcap set 删除
- 栈(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 {
9 private T[] data; //储存栈内元素的数组
10 private int capacity; //栈的容量(栈内元素数量的最大值)
11 private int size; //栈的大小(栈内现有元素的数量)
12 private int top; //栈顶标志器
13
14 public Stack(Class 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 }
我的算法日志:数据结构之栈
标签:tca strong mamicode 线性 一个栈 删除元素 tcap set 删除
原文地址:https://www.cnblogs.com/Seraph1999/p/12791213.html
评论