诚求:理解栈的出入顺序。

看了很多帖子,还是很模糊啊。不谈代码,光谈思想。
字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串。怎么理解那一个不能成立的字符窜组合,为什么它不成立,剩下5个是怎么成立的。

一共有6种组合:
1) ABC 即A进A出,B进B出,C进C出
2) ACB 即A进A出,B进C进,C出B出
3) BAC 即A进B进,B出A出,C进C出
4) BCA 即A进B进,B出C进,C出A出
5) CBA 即A进B进,C进C出,B出A出

栈的性质是 后进先出, 以上5种组合是可以的。
6) CAB
这是不行的,因为C已经出栈,B在A的上面,这时,A在B前面出来是不可能的。

想象成一个水杯,往水杯里放积木,因为水杯只有上面的开口,
显然只有压在上面的积木出来后,下面的积木才能出来。

用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢!

a进b进c进,再出就是cba
a进b进b出c进,再出就是bca
a进a出b进c进,再出就是acb
a进a出b进b出c进,再出就是abc
a进b进b出a出c进,再出就是bac
不可能出现cab的情况,因为按照cab的出栈顺序不符合先进后出的规则

栈是先进后出类型的,先进去的总是再最后才出来。所以进栈叫压栈,出栈叫弹栈。先进去的到栈底,后面进来的在栈顶,出去的话只能从栈顶出去,只有一个出口,所以后面进来的栈顶的元素会先出栈。比如A>B>C,那么弹栈的时候就是C>B>A

就跟洗盘子放盘子一样啊,
先洗好的放在下面,最后洗好的放在上面,
用来装菜的时候,会先用最上面的盘子,最下面的盘子会最后使用。
楼上说的都是正解。

理解先进先出,后进后出