class Stack{
constructor(){
this.arr=[]
this.count=0;
}
//添加栈元素
add(data){
this.arr.push(data);
this.count++;
}
//移除栈顶元素
sub(){
if(this.isEmpty()){return false;}
var a=this.arr.pop()
this.count--;
return a;
}
//获取栈顶元素
getHead(){
if(this.isEmpty()){return false;}
return this.arr[this.count-1];
}
//返回栈长度
size(){
return this.count;
}
//清除栈
clear(){
this.count=0;
this.arr=[]
}
//判断栈空
isEmpty(){
return this.count===0
}
//输出栈元素
output(){
for(var i=0;i<this.arr.length;i++){
console.log(this.arr[i]);
}
}
//获取栈中指定元素下标
getIndex(data){
return this.arr.indexOf(data);
}
//输出栈元素
toString(){
var str=''
for(var i=this.count-1;i>=0;i--){
str+=this.arr[i]
}
return str
}
}
//进制转换
function change(prev,next){
var s=new Stack();
const fn=function(s){
var i=prev%next;
s.add(i)
prev=Math.floor(prev/next);
if(prev===0){
console.log(s.toString())
return s;
}else{
fn(s)
}
}
fn(s);
}
//队列(两个栈实现一个队列)
class Queue{
constructor(){
this.s1=new Stack()
this.s2=new Stack();
}
add(data){
while(this.s2.count>0){
this.s1.add(this.s2.sub());
}
this.s1.add(data);
}
sub(){
while(this.s1.count>0){
this.s2.add(this.s1.sub());
}
return this.s2.sub()
}
get(){
while(this.s1.count){
this.s2.add(this.s1.sub());
}
return this.s2.getHead()
}
output(){
while(this.s1.count){
this.s2.add(this.s1.sub())
}
return this.s2.toString()
}
}