学习数据结构与算法是枯燥的,但只有坚持不懈的积累,才会有硕果累累的明天。
1 /** 2 * 继续学习Java数据结构 ————栈 3 * 栈的实现其实还是使用数组,只不过我们不能直接访问数组下标,而是通过一个指针来对其进行操作 4 * 栈的重要数据特性————先进后出 5 * 压入、弹出、访问、是否空、是否满 6 */ 7 public class Stack { 8 private long arr[]; 9 private int top;// 指针 10 private int Maxsize; 11 12 public Stack(int size) {// 构造函数 13 this.Maxsize = size; 14 arr = new long[Maxsize]; 15 top = -1;// 我们可以操作的指针,初始值为-1 16 } 17 18 public void push(int value) {// 压入数据 19 if(top >= Maxsize - 1){ 20 System.out.println("栈满,添加失败"); 21 } 22 arr[++top] = value; 23 } 24 25 public long pop() {// 弹出数据 26 return arr[top--]; 27 } 28 29 public long peek() {// 访问指针当前数据 30 return arr[top]; 31 } 32 33 public boolean isEmpty() {// 是否空 34 return top == -1;// 指针初始值 35 } 36 37 public boolean isFull() {// 是否满 38 return top == arr.length - 1;// 指针等于数组长度-1 39 40 } 41 42 public static void main(String[] args) { 43 Stack s = new Stack(5); 44 s.push(24); 45 s.push(45); 46 s.push(23); 47 s.push(46); 48 s.push(61); 49 50 System.out.println(s.peek());// 最后一个数 51 52 while (!s.isEmpty()) {// 如果不为空 53 System.out.print(s.pop() + " ");// 先进后出 54 } 55 } 56 57 }