栈是一种遵从先进后出(LIFO)原则的有序集合。新添加的或待删除的元素都保存在栈的末尾,称作栈顶,另一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
而栈主要是在编程语言的编译器里用来保存变量和方法调用等。
function Stack() {
this.dataStore = []; //保存栈内元素
this.top = 0; //标记可以插入新元素的位置
this.push = push; //入栈操作
this.pop = pop; //出栈操作
this.peek = peek; //返回栈顶元素
this.clear = clear; //清空栈
this.length = length; //栈的长度
}
//向栈中压入元素 同时让指针top+1 一定注意++
function push(element) {
this.dataStore[this.top++] = element;
}
//出栈操作 同时将top-1
function pop() {
return this.dataStore[--this.top];
}
//返回栈顶元素,变量top值减1 返回不删除
function peek() {
return this.dataStore[this.top - 1];
}
//返回栈内元素个数
function length() {
return this.top;
}
//清空一个栈
function clear() {
this.top = 0;
}
//回文算法
function isPalindrome(word){
var s = new Stack();
for(var i=0;i<word.length;i++){
s.push(word[i]);
}
var rword = "";
while(s.length()>0){
rword+=s.pop();
}
if(rword == word){
return true;
}else{
return false
}
}
var word = "12321";
console.log(isPalindrome(word));