栈是最基本的数据结构之一,他的特点是:后进先出
栈的基本功能
- 进栈:添加元素到栈顶
- 出栈:删除栈顶的元素并返回
- 读取栈顶的数据元素
- 判断栈是否为空,为空返回true
- 计算栈存储数据的大小
- 清空栈
- 打印栈中的所有元素
代码实现
基本的架构如下所:
function Stack(){
let item = [];
/**
* 添加元素到栈顶
* @param m 进栈的元素
*/
this.enStack = function(m){
}
/**
* 出栈,删除栈顶的元素并返回
*/
this.deStack = function(){
}
/**
* 读取栈顶的元素
*/
this.peek = function(){
}
/**
* /判断栈是否未为空
*/
this.isEmpty = function(){
}
/**
* 计算栈的容量
*/
this.size = function(){
}
/**
* 清空栈
*/
this.clear = function(){
}
/**
* 打印栈中的所有元素
*/
this.print = function(){
}
}
- this.enStack——进栈操作
this.enStack = function(m){
item.push(m);
}
- this.deStack——出栈
this.deStack = function(){
return item.pop();
}
- this.peek 读取栈顶的元素
this.peek = function(){
return item[item.length - 1];
}
- this.isEmpty 判断栈是否为空
this.isEmpty = function(){
return item.length === 0;
}
- this.size 计算栈的容量
this.size = function(){
return item.length;
}
- this.clear 清空栈
this.clear = function(){
item = [];
}
- this.print 打印栈中的元素
this.print = function(){
console.log(item.toString());
}
栈的实际应用
在进制转化的结果是将余数倒着排列,这时就需要用到栈,先得到的余数放后面,后得到的余数放前面,具体实现过程
十进制转化为二进制
十进制转化为二进制的计算方式:除2取余法
代码实现过程:
function transformTo(decNumber){
let remStack = new Stack();
let rem = '';
let remString = '';
while(decNumber){
rem = decNumber % 2;
remStack.enStack(rem);
decNumber = parseInt(decNumber / 2);
}
while(!remStack.isEmpty()){
remString += remStack.deStack().toString();
}
return remString;
}
const decRes = transformTo(10);
console.log(decRes);
最后的输出结果是:1010
将十进制转化为任意进制
function transformTo(decNumber, base){
let remStack = new Stack();
let rem;
let remString = "";
let digits = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F'];
while(decNumber > 0){
rem = decNumber % base;
remStack.enStack(rem);
decNumber = parseInt(decNumber / base);
}
while(!remStack.isEmpty()){
remString += digits[remStack.deStack()];
}
return remString;
}
const decRes = transformTo(1200, 16);
console.log(decRes);
输出结果是:4B0
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。