王龙楷

浪迹前端世界

数据结构之JavaScript实习栈(Stack)

什么是栈?

栈是一种特殊的列表,栈内的元素只能在列表的一段访问,这一端被称为栈顶。栈是一种后入先出的数据结构

下面就是JavaScript实现栈:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>JavaScript实现stack</title>
</head>
<body>
	
	<script>
		/*定义栈构造函数*/
		function Stack(){
			this.dataStore = [];
			this.top = 0;
			this.length = length;
			this.empty = empty;//判空
			this.push = push;  //入栈
			this.pop = pop;    //出栈
			this.clear = clear;//清空
			this.peak = peak;  //返回栈顶元素
		}

		/*实现相关函数*/

		//length:栈中元素总数
		function length(){
			return this.top;
		}

		//empty:判空
		function empty(){
			if(this.top == 0){
				return true;
			}
			return false;
		}

		//push:入栈
		function push(element){
			this.dataStore[this.top++] = element;
		}

		//pop:出栈
		function pop(){
			var topEle = this.dataStore[--this.top];
			this.dataStore.length = this.top;
			return topEle;
		}

		//peek:返回栈顶元素
		function peak(){
			return this.dataStore[this.top-1];
		}

		//clear:清空
		function clear(){
			this.top = 0;
			this.dataStore =  [];
		}

		//测试
		var stack = new Stack();
		stack.push("one");
		stack.push("two");
		stack.push("three");
		stack.push("four");
		
	</script>
</body>
</html>



此外,介绍几个栈的实际应用。


栈的使用之数制转换:可以利用栈将数字从一种进制转换成另外一种进制。下面的方法之适合基数为2~9的情况。

//栈的使用之数制转换
		function change(num,base){
			var S = new Stack();
			while(num>0){
				S.push(num%base);
				num = Math.floor(num/=base);
			}
			var result = "";
			while(S.length()>0){
				result+=S.pop();
			}
			return result;
		}
		//测试
		console.log(change(100,2));//"1100100"


栈的使用之回文:回文是指这样一种现象,一个单词、短语、数字,可以从前往后和从后往前写都是一样。比如:121,“abcba”。使用栈可以轻松判断字符串是否是回文。

//栈的使用之回文
		function huiwen(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(word == rword){
				return true;
			}else{
				return false;
			}
		}
		//测试
		huiwen("abcba");//true

阅读更多
版权声明: https://blog.csdn.net/wlk2064819994/article/details/79959099
个人分类: js数据结构
上一篇两种方式实现CSS动画
下一篇数据结构之JavaScript实现队列(queue)
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭