数组实现栈
public class StackX { private int maxSize; private long[] stackArray; private int top; public StackX(int max){ stackArray = new long[max]; top = -1;//空栈 } public void push(long j){ stackArray[++top] = j; } public long pop(){ return stackArray[top--]; } public long peek(){ return stackArray[top]; } public boolean isEmpty(){ return top == -1; } public boolean isFull(){ return top == (maxSize -1); } public static void main(String[] args) { //创建栈 StackX stack = new StackX(10); //入栈 stack.push(10); stack.push(20); stack.push(30); stack.push(40); stack.push(50); //查看栈 System.out.println("查看栈:"+stack.peek()); //出栈 while(!stack.isEmpty()){ System.out.println("出栈"+stack.pop()); } } }
栈、队列
受限访问:
在数组中若知道数据项的下标,便立即可以反问该数据项;或者通过顺序搜索数据项,访问到数组中的各项数据。而栈、队列等数据结构,访问是受限的,即在特定时刻只有一个数据项可以被读取或者删除(除非作弊)。
这些结构接口的设计增强了这种受限访问。访问其他数据项(理论上)是不允许的。
更加抽象:
栈、队列和优先级队列是比数组和其他数据存储结构更为抽象的结构。主要通过接口对栈、队列和优先级队列进行定义,这些接口表明通过他们可以完成的操作,而他们的主要实现机制对用户来说是不可见的。
例如,栈的主要机制可以用数组来实现,但也可以通过链表来实现。优先级队列内部实现可以用数组或一种特别的树——堆来实现(用一种数据结构来实现另一种数据结构)。
栈
栈只允许访问一个数据项:即最后插入的的数据项。移除这个数据项后才能访问倒数第二个插入的数据项,一次类推。栈也是那些相当复杂的数据结构算法的遍历工具