赞
踩
目录
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
先进后出,后进先出
1、栈分成了 栈顶 和 栈底 (在栈顶进行元素的插入和删除)
2、入栈 (push) 出栈(pop)
图解:
火车进行列车调度时,常把站台设计为栈这种结构,方便实现车头的调度
假设给每节车厢从1开始依次编号,现给出出栈序列,请判断是否为合法序列
例如现在有五节车厢,编号分别为1、2、3、4、5
待检测序列:
3 2 1 5 4
检测结果:
合法
待检测序列:
3 1 2 4 5
检测结果:
不合法
实现思路:
遍历出栈序列中的每个数字arr[i];
循环判断 栈为空 或 栈顶与arr[i]不相等 ,并且保证当前火车车厢号没有超过最大值,将火车车厢号入栈,并更新下一个车厢号
如果 栈为空 或 栈顶与arr[i]不相等 条件满足 ,循环因 车厢号超过了最大值 退出, 那么说明不是合法序列
否则 因 栈不为空 且 栈顶元素与arr[i]相等 退出的循环,执行出栈
如果扫描结束,没有得到序列不合法的结论,那么序列就是合法的
感兴趣的同学,课下可以将代码实现。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。