最近的文章主要都是算法数据结构以及 JavaScript 设计模式的相关知识 记得大学的时候那时候大二的时候,我们是电子商务班,主要偏向于营销方面所以班上只有两个人专研技术这一方面 当初因为对电脑对网络对建站这方面非常感兴趣所以每天下课后都会寝室专研技术 然而大学里面最应该耍朋友的时间也没有了 现在想来真的有点儿后悔,但是也值得,学到了很多东西嘛 。记得后来在外包公司实习了几个月,那时候也是什么都做什么服务器配置搭建网站都在做, 最郁闷的是我们学校里面没有学习过 flash 和流媒体相关的东西但是最后自己也得学习 那个公司虽然有点儿坑当时工资也不高 但是学到了很多东西 现在想来真该谢谢他们 提供的学习环境,废话不多说我们直接上代码 什么是堆栈 在计算机科学中,是一种特殊的串行形式的数据结构,它的特殊之处在于只能允许在链结串行或阵列的一端(称为堆栈顶端指标,英语:top)进行加入资料(英语:push)和输出资料(英语:pop)的运算。另外堆栈也可以用一维阵列或连结串行的形式来完成。 根据定义我们知道栈只有三种操作:入栈(push),出栈(pop),获取栈顶元素(top)。而且栈只能够操纵栈顶元素,即只能在一端进行操作。 由于栈具有后进入的元素率先弹出的性质,栈又被称为后进先出(LIFO, Last In First Out)的结构。 栈的操作十分简单,我们可以用单链表(LinkedList)和数组来实现栈。 然而在 JavaScript 中,Array 自带 pop(), push()的操作,而且我们可以利用 Array[Array.length-1]来实现 top()操作。所以没有必要去另外实现一个 Stack 类型,用 Array 表达即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

//定义一个打印函数
function print(msg){
console.log(msg);
}

//定义一个堆栈类使用js 进行实现
function Stack(){
this.top=0;
this.dataStore=[];
}
//定义相关方法继承在原型上面
Stack.prototype={
push:function(data){
this.dataStore[this.top++] = data;
},
pop:function(){
return this.dataStore[--this.top];
},
peek:function(){
return this.dataStore[this.top-1];
},
length:function(){
return this.top;
},
clear:function(){
this.top = 0;
}

};
var s = new Stack();

s.push('david');
s.push('raymond');
s.push('bryan');
print('lenght:'+s.length());
print(s.peek());
var popped = s.pop();
print('the popped element is : '+popped);
s.push('cynthia');
print(s.peek());
s.clear();
print('length :'+s.length());
print(s.peek());
s.push('clayton');
print(s.peek());

//输出
// lenght:3
// stack.js:3 bryan
// stack.js:3 the popped element is : bryan
// stack.js:3 cynthia
// stack.js:3 length :0
// stack.js:3 undefined
// stack.js:3 clayton