-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
javaScript的数据结构与算法(一)——栈和队列 #4
Labels
Comments
请问我能够把你这系列的转载么? |
@stick-yi 可以的。 |
非常的棒,我是从前端开始学习,最近开始想学习底层原理。发现老哥写的这篇文章,受益良多。 |
@norname-shine 嗯嗯 谢谢你的建议 |
真棒 |
divideBy2 如果传入 0 就会有问题显示一个 '' ",更应该期待为 0 console.log(divideBy2(0) === '0'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
1、栈
栈是一种遵从后进先出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的末尾。称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都靠近栈底。现在通过数组的方法来实现栈,代码如下:
下面是一个小算法题,可以视为栈的综合利用,如何将10进制数字转成2进制数字:
升级版, 如何将10进制数字转成任意进制数字,代码如下:
2、队列
队列遵循的是FIFO(先进先出)的原则的一组有序的项。队列从尾部添加新元素,并从顶部移除元素,最新添加的元素必须排列在队列的末尾。
2.1、优先队列
指队列元素的添加和移除是基于优先级的。实现一个优先队列,有两种选项:设置优先级,然后再正确的位置添加元素;或者用入队操作添加元素,然后按照优先级移除他们。下例将会在正确的位置添加元素,如下:
2.2、循环队列——击鼓传花
击鼓传花游戏,在这个游戏中,孩子们围成一个圆圈,把花尽快的传递给旁边的人。某一时刻传花停止,这个时候花落在谁手里,谁就退出圆圈结束游戏。重复这个过程,直到只剩下一个孩子。例子如下:
The text was updated successfully, but these errors were encountered: