所谓栈,就是一种先进后出的数据结构。
何为先进后出?想象一个箱子,你往箱底塞了一本语文书,然后往语文书上放数学书。假设箱子底面积与书的面积相同,那么你想把先放进去的语文书拿出来,就必须得先把放在上面的数学书拿出来。所以“先进”的语文书与数学书比较是“后出”的。
在代码中一个栈由一个数组(stk)和一个变量(top)组成,数组存信息,([1,top])的空间都被占用了,下一次放元素就只能放在(top+1)这个位置然后让(top=top+1)。拿元素也只能从栈顶,也就是(top)拿出来,然后(top=top-1)。
虽然栈的构成和代码都十分的简单,但是由于题目需求的毒瘤多样性,可以变着法子玩,比如要栈里所有元素保持单调的单调栈,两个口子相对的对顶栈等等……