概念

栈是遵从一种先进后出(LIFO)的有序集合

实现栈

  1. function Stack() {
  2. let items = [];
  3. // 向栈内添加元素
  4. this.push = function(element) {
  5. items.push(element);
  6. }
  7. // 从栈顶移除元素
  8. this.pop = function() {
  9. return items.pop();
  10. }
  11. // 查看栈顶元素
  12. this.peek = function() {
  13. return items[items.length - 1];
  14. }
  15. // 检查栈是否为空
  16. this.isEmpty = function() {
  17. return items.length == 0;
  18. }
  19. // 查看栈的长度
  20. this.size = function() {
  21. return items.length;
  22. }
  23. // 清空栈
  24. this.clear = function() {
  25. items = [];
  26. }
  27. // 打印栈元素
  28. this.print = function() {
  29. console.log(items.toString());
  30. }
  31. }

栈的应用

10进制转2进制

  1. function divideBy2(decNumber) {
  2. var remStack = new Stack();
  3. var rem;
  4. var binaryString = '';
  5. while(decNumber > 0) {
  6. rem = Math.floor(decNumber % 2);
  7. remStack.push(rem);
  8. decNumber = Math.floor(decNumber / 2);
  9. }
  10. while(!remStack.isEmpty()) {
  11. binaryString += remStack.pop().toString();
  12. }
  13. return binaryString;
  14. }