栈
栈是一种很常见的数据结构,其特点是先进后出(FILO,first in last out),只可以操作栈顶的元素。
在jdk中,已经封装了Stack,可以拿来即用。api中Stack是通过Vector实现的。是一个线程安全的数组框架。
仿照java api来实现一个栈。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| class Stack { int[] stack; int maxSize; int top = -1; public Stack() {} public Stack(int maxSize) { this.maxSize = maxSize; stack = new int[maxSize]; }
public boolean isEmpty() { return top == -1; } public boolean isFull() { return top == maxSize - 1; } public void push(int data) { if ( isFull() ) return; stack[++top] = data; } public int pop() { if(isEmpty()) return; return stack[top--]; } public int peek() { return stack[top]; } public void traverse() { if (isEmpty()) return; for (int i = top; i >= 0; i--) { System.out.println(stack[i]); } } }
|
栈的应用比较广泛
在程序函数的调用中,使用到了栈结构,当调用一个函数时,会开辟一块空间,用来存放函数中的变量等,而当函数执行完毕之后,就会销毁这个空间,即出栈。
使用栈来对数学表达式求值等等