JavaScript数据结构与算法(一) 栈的实现

TypeScript版本源码

 

 1 class Stack {
 2     items = [];
 3     public push(element) {
 4         this.items.push(element);
 5     }
 6     public pop() {
 7         return this.items.pop();
 8     }
 9     public peek() {
10         return this.items[this.items.length - 1];
11     }
12     public isEmpty() {
13         return this.items.length == 0;
14     }
15     public size() {
16         return this.items.length;
17     }
18     public clear() {
19         this.items = [];
20     }
21     public print() {
22         console.log(this.items.toString());
23     }
24 }

 

TypeScript版本调用

 1 // 使用Stack类
 2 // 验证一下栈是否为空
 3 let stack = new Stack();
 4 console.log(stack.isEmpty());       // => true
 5 
 6 // 往栈添加元素
 7 stack.push(5);
 8 stack.push(8);
 9 
10 // 查看栈里添加的最后一位元素
11 console.log(stack.peek());          // => 8
12 
13 // 再添加一个元素
14 stack.push(11);
15 console.log(stack.size());          // => 3
16 console.log(stack.isEmpty());       // => false
17 
18 // 再添加一个元素
19 stack.push(15);
20 
21 // 下图描绘目前我们对栈的操作,以及栈的当前状态
23 // 然后,调用两次pop方法从栈里移除2个元素: 24 25 stack.pop(); 26 stack.pop(); 27 console.log(stack.size()); // => 2 28 stack.print(); // => [5,8] 29 30 // 下图描绘目前我们对栈的操作,以及栈的当前状态

 

JavaScript版本源码

 1 var Stack = (function () {
 2     function Stack() {
 3         this.items = [];
 4     }
 5     Stack.prototype.push = function (element) {
 6         this.items.push(element);
 7     };
 8     Stack.prototype.pop = function () {
 9         return this.items.pop();
10     };
11     Stack.prototype.peek = function () {
12         return this.items[this.items.length - 1];
13     };
14     Stack.prototype.isEmpty = function () {
15         return this.items.length == 0;
16     };
17     Stack.prototype.size = function () {
18         return this.items.length;
19     };
20     Stack.prototype.clear = function () {
21         this.items = [];
22     };
23     Stack.prototype.print = function () {
24         console.log(this.items.toString());
25     };
26     return Stack;
27 }());

 

posted @ 2017-06-08 15:34  鱼肥肥与肥肥鱼  阅读(206)  评论(0编辑  收藏  举报