数据结构与算法(js描述)———— 栈


前言

本文对JavaScript描述的栈类型数据结构总结。


一、栈是什么?

栈就是和列表类似的一种数据结构,是一种高效的数据结构,因为数据只能在栈顶添加或删除。

二、栈的实现

function Stack() {
	this.dataStore = []; //保存栈内元素
	this.top = 0;	//记录栈顶位置
	this.push = push; //向栈内压入新元素
	this.pop = pop;	//移除栈顶元素
	this.peek = peek; //返回栈顶元素
	this.length = length; //栈内元素个数
	this.clear = clear; //清空栈
}

function push(elememt) {
	this.dataStore[this.top++] = element;
}

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;
}

2.数制转换

//设计将数字转化为二至九进制
function mulBase() {
	var s = new Stack();
	do {
		s.push(num % base);
		num = Math.floor(num /= base);
	} while (num > 0);
	var converted = '';
	while (s.length() > 0) {
		converted += s.pop();
	}
	return converted
}

3.判断回文

回文:指一个单词、短语或数字,从前往后写和从后往前写都是一样的。

//判断给定字符串是否为回文
function isPalindrome() {
	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 (word == rword){
		return true;
	}
	else {
		return false;
	}
}

4.递归演示

//计算任何数字的阶乘
function factorial(n) {
	if (n === 0) {
		return 1
	}
	else {
		return n * factorial(n-1);
	}
}

//使用栈模拟递归过程
function fact(n) {
	var s = new Stack();
	while (n > 1) {
		s.push(n--)
	}
	var product = 1;
	while (s.length() > 0) {
		product *= s.pop();
	}
	return product;
}

总结

	下一篇JavaScript描述的队列数据类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值