N++与++N
假如我有一个定长的数组 a =[0,3,2,1] ,其中a.length = 4
那么我如果N++的话,先输出4,再输出5,6,7
那么如果是++N的话,先输出5,然后输出6,7,8
同理--N与N--与上面是一样的逻辑
定容栈的实现是许多用例(集合数据类型--Bag,Stack,Queue )的基础模块
定容栈:
只能处理String值,并且容量要指定一个固定的数字,且不支持迭代
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 FiexedCapacityStackOfStrings {
private String[] a; //栈的容量
private int N; //集合的长度
FiexedCapacityStackOfStrings(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 cece {
public static void main(String[] args) throws InterruptedException {
//定容栈的容量这里我设置的是100
FiexedCapacityStackOfStrings s = new FiexedCapacityStackOfStrings(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());
}
}