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

标签: 先入后出 JavaScript 数据结构
12人阅读 评论(1) 收藏 举报
分类:

什么是栈?

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

下面就是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

查看评论

Java数据结构与算法之stack栈

目录: 1.栈概述 2.数组实现自定义栈 3.链表实现自定义栈 4.集合实现自定义栈 1.栈概述 栈和队列一样,也是线性表的一种,它唯一的特点是需要满足先进后出(FILO)的规则,也就是只能对栈的一...
  • qq_28057577
  • qq_28057577
  • 2016年10月05日 16:17
  • 1349

数据结构与算法---栈(stack)

栈(stack)是一种常用的数据结构。它规定了数据的存取形式,栈只有一个出入口。在栈中存放数据,向栈中存入数据称为入栈,读取数据称为出栈。栈这种数据结构的存储特点是先进后出(FILO),即先存入栈中的...
  • sunshinecj
  • sunshinecj
  • 2016年07月30日 10:03
  • 560

线性表数据结构解读(三)栈结构Stack

在上一篇文章中,我们详细介绍了链式存储结构,并结合LinkedList源码进行了分析,相关文章大家可以点击这里回看我的博客:线性表数据结构解读(二)链式存储结构LinkedList栈的定义    栈是...
  • mynameishuangshuai
  • mynameishuangshuai
  • 2016年09月28日 13:32
  • 1999

C++_STL_数据结构_stack_栈

栈(statck)这种数据结构在计算机中是相当出名的。栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出...
  • yimingsilence
  • yimingsilence
  • 2016年11月08日 20:35
  • 1218

数据结构栈之javascript实现

栈是一种支持后进先出(LIFO)的集合,即后被插入的数据,先被取出
  • lilythy2016
  • lilythy2016
  • 2016年08月25日 17:38
  • 495

Java数据结构----栈(Stack)源码分析和个人简单实现

栈单链表实现:没有长度限制,并且出栈和入栈速度都很快 public class LinkedListStack { private LinkedList linkedList = new L...
  • oChangWen
  • oChangWen
  • 2016年02月17日 23:29
  • 3615

使用python实现数据结构 -- Stack(栈)

栈是一种先进后出的数据结构,在计算机中应用广泛,比如函数的调用就是一个入栈出栈的过程,本文介绍使用python实现一个简单栈的过程。栈的调用过程以及内部数据变化如下: stack.py的定义如下: ...
  • sjhuangx
  • sjhuangx
  • 2016年10月29日 21:44
  • 1762

【数据结构】栈实现迷宫寻路问题

思路: 解决迷宫求解的问题,从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。为了保证在任何位置上都能沿原路退回,所以需要用...
  • shangguan_1234
  • shangguan_1234
  • 2016年09月11日 22:07
  • 1045

java数据结构与算法之栈(Stack)设计与实现

【版权申明】转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53362993 出自【zejia...
  • javazejian
  • javazejian
  • 2016年11月28日 12:27
  • 11197

数据结构 二:表(list)、栈(stack)、队列(Queue)

一、表(list) 概念:形如A0,A1,A2,…,An-1的一般表,表大小n,大小为0的特殊的表位空表(empty list)。如果元素Ai前有元素Ai-1,则Ai-1为Ai的前驱,Ai为Ai-...
  • Online_you
  • Online_you
  • 2016年10月18日 08:13
  • 541
    个人资料
    持之以恒
    等级:
    访问量: 398
    积分: 236
    排名: 33万+
    文章存档
    最新评论