文章链接:日撸 Java 三百行(总述)_minfanphd的博客-CSDN博客
day14 栈 14.1 栈的特点:栈:后进先出,只能在栈顶操作。是先移动“指针”还是先移动数据,在出栈和进栈时要保持一致。当进栈操作时,先将数据存入,“指针”再做加一操作;当出栈时,先将数据取出,“指针”再做减一操作。在写代码过程中,我为了方便直接,在出栈时直接depth--,但是在调试时发现了问题。因为数组是从0开始的,取出的数据并不是自己想要的。
//出栈 tempPopChar = data[depth--];
public boolean push (char paraChar) {
if (depth == MAX_DEPTH) {
System.out.println("Stack is full!");
return false;
}
data[depth++] = paraChar;
return true;
}
public char pop() {
char tempPopChar;
if (depth == 0) {
System.out.println("Stack is empty");
return ' ';
}
// error code : tempPopChar = data[depth--];
tempPopChar = data[depth - 1];
depth--;
return tempPopChar;
}
day15 栈的应用(括号匹配)
15.1 思路
如(),[],{}括号左右对称,我们将括号分为左右,左括号入栈,遇到右括号就出栈一个左括号与之匹配,匹配成功即匹配,失败则不匹配。不要忘记在最后要判断一下栈中括号是否出栈完。在这里使用的是switch...case来进行判断分支,但是若换成if,else if,else来实现,则代码中会出现很多的分支,显然会显得代码很冗余,所以当分支较多时,使用switch相比if会好一些。
Is the expression [2 + (1 - 3)] * 4 bracket matching? true
Is the expression ( ) ) bracket matching? false
Is the expression (()()(()) bracket matching? false
Is the expression ({}[]) bracket matching? true
Is the expression )( bracket matching? false
day16 递归
16.1 递归特点
我的理解:自己调用自己的方法,但是不能无限制的调用,在合适的时候一定又要一层层跳出自己方法最后跳出。在使用递归时,不能把问题考虑的太细,不然会陷入这个循环中,既然每个子问题规律一样,只需要知道他们规律,剩下交给计算机处理。
总结1.程序实现出入栈,根据栈的特点,括号匹配例如栈来实现
2.递归的简单应用



