代码
package base.第一章.背包_队列_和栈.数组实现定容栈.定容栈;
/**
* Created by MK on 2018/7/23.
* 定容栈: 只能处理String值,并且容量要指定一个固定的数,且不支持迭代
* <p>
* public class FiexedCapacityStackOfStrings
* FiexedCapacityStackOfStrings(int cap) //创建一个容量为cap的空栈
* void push(String item) //添加一个字符串
* String pop() //删除最近添加的字符串(因为栈是后进先出的原理)
* boolean isEmpty() //栈是否为空
* int size() //栈中的字符串数量
*/
public class 定容栈 {
private String[] a; //栈的容量
private int N; //集合的长度
定容栈(int cap){ a =new String[cap];} //容量的大小
public boolean isEmpty(){return N==0;}
int Size(){return N;}
void push(String item){
a[N++] = item;
}
String pop(){
return a[--N];
}
}
定容栈测试
package base.第一章.背包_队列_和栈.数组实现定容栈.定容栈;
import edu.princeton.cs.algs4.StdOut;
/**
* Created by MK on 2018/7/23.
* 测试定容栈
*/
public class 定容栈测试 {
public static void main(String[] args) throws InterruptedException {
//定容栈的容量这里我设置的是100
定容栈 s = new 定容栈(100);
//压入栈中
s.push("a");
s.push("b");
s.push("c");
s.push("d");
//将数据弹出,因为是栈所以是后进先出的原理
/*
* 这里为什么弹出的是d
* 理由:
* 程序是从上往下执行的,当我执行到.push(d),的时候是最后一次执行
* 因此,最后进入到栈中的就是d
*
* */
StdOut.println(s.pop());
StdOut.println(s.Size());
}
}