其实感受这都不算算法题,不过天天时间有限,也就记录一下了,(ps:程序员简洁风,之后就上题解题说我的思路,嗯,珍爱生命,远离小菜)程序员
固定数组实现栈结构及队列结构算法
//固定数组实现栈结构
class arrStrack{
constructor(initSize){
if(initSize<0){
throw new Error('栈长度不能为负数')
}
this.initSize = initSize; //栈的长度
this.index = -1; //永远指向最新数据的索引的变量
this.arr = [];
this.size = 0;//实际数据长度
}
/**
*
* @param {数组初始大小} initSize
*/
push(ele){
if((this.index+1) == this.initSize){
throw new Error('栈溢出')
}
this.size++;
this.arr[++this.index]=ele;
}
pop(){
if(this.size==0) throw new Error('栈为空')
this.index--;
return this.arr[--this.size];
}
}
let strack = new arrStrack(3);
strack.push('hhh');
console.log(strack.pop())
//固定数组实现队列结构
class arrQueue{
constructor(initSize){
if(initSize<0){
throw new Error('队列长度不能为负数')
}
this.initSize = initSize; //队列的长度
this.star = 0; //指向添加时的索引的变量
this.end = 0;//指向弹出时的索引的变量
this.arr = [];
this.size = 0;//实际数据长度
}
push(ele){
if(this.size >= this.initSize) throw new Error('队列溢出');
this.arr[this.star++] = ele;
this.star = (this.star+1) >this.initSize ? 0 : this.star++;
}
poll(){
if(this.size == 0) throw new Error('队列为空');
this.end = (this.end+1) > this.initSize ? 0 :this.end++;
size--;
}
}
复制代码