列表:
以表格为容器,装载着文字和图表的一种形式叫做列表。
数据结构中列表一般是指线性列表,是一种数据项构成的有序序列,即按照一定的线性顺序,排列而成的数据集合,一般操作有:插入,查找和删除。
栈:
栈是和列表一样的数据结构,栈是一种高效的数据结构,因为数据只能在栈顶删除或者添加,所以这样操作很快。
栈是一种特殊的列表,栈内的元素只能通过列表一端访问,这一段成为栈顶。栈被称作一种后入先出的数据结构。
对栈的两种主要操作:
- 入栈使用push()方法
- 出栈使用pop()方法 //可以返回栈顶的元素,但是栈顶的元素将会永久的删除。可以使用peek().只返回栈顶元素但不删除。
clear()方法清除站内的所有元素,length返回栈的长度。empty()方法表示栈内是否有元素。
栈的实现:
首先先定义一个类的构造函数来实现。
function Stack(){
this.dataStore=[];
this.top=0;
this.push=push;
this.pop=pop;
this.peek=peek;
this.length=length
}
构建一些常用的方法:
function push(ele){
this.dataStore[this.top++]=ele;
}
function pop(){
return this.dataStore[--this.top]
}
function peek(){
return this.dataStore[this.top-1]
}
function length(){
return this.top;
}
function clear(){
this.top=0;
}
I++和++I的区别:
i++:先赋值在++
a=i++等同于a=i;i++
相反++i:先++在赋值
a=++i等同于i++,a=i
for(var i=0;i<=10;i++){
a=++j;
console.log(a,j);
}
//
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
var j=0;
for(var i=0;i<=10;i++){
a=++j;
console.log(a,j);
}
//
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
使用stack类:
1.数制间的相互转换
2.回文(一个单词,短语,数字)从前往后和从后往前写都是一样的
function ishuiwen(string){
var s=new Stack();
var i=0;
while(i<string.length){
s.push(string[i]);
i++
}
var _string="";
while(s.length()>0){
_string+=s.pop()
}
if(string==_string){
console.log('is a huiwenshu')
}
else{
console.log('is not a huiwenshu')
}
}
ishuiwen('dad')
3.递归演示
求5的阶乘:
function jc(n){
if(n==0){
return 1;
}
else{
return n*jc(n-1);
}
}
使用栈的写法:
function jc(n){
var s=new Stack();
while(n>1){
s.push(n--)
}
var num=1;
while(s.length()>0){
num*= s.pop()
}
return num;
}
console.log(jc(5))