问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

栈的实现

发布网友 发布时间:2022-05-01 19:49

我来回答

2个回答

懂视网 时间:2022-04-22 19:40

本篇文章给大家带来的内容是关于js实现链式栈的代码实例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

官方定义:链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。

具体的实现

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			function LinkStack(){
				this.length = 0;
				this.top = null;//栈顶指针				
			};
			
			LinkStack.prototype.Node = function(el){
				this.element = el;
				this.next = null;
			};
			
			//压栈
			LinkStack.prototype.push = function(el){
				var current,
				 Node = this.Node,
				 node = new Node(el);
				 
				 if(!this.top){
				 	this.top = node;
				 	this.length++;
				 	return true;
				 }else{
				 	current = this.top; 
				 	node.next = current;
				 	
				 	this.top = node;
				 	this.length++;
				 	return true;
				 }
			};
			
			//退栈
			LinkStack.prototype.pop = function(){
				var current = this.top;
				if(current){
					this.top = current.next;
					current.next = null;
					this.length--;
					return current;
				}else{
					throw "error null stack"
				}
			};
			
			LinkStack.prototype.toString = function(){
				var str = "",
				 current = this.top;
				
				while(current){
					str += current.element + " ";
					current = current.next;
				}
				
				return str;
			};
			
			//清空栈
			LinkStack.prototype.clear = function(){
				this.top = null;
				this.length = 0;
				return true;
			};
			
			
			/***************测试代码******************/
			function test(){
				var linkStack = new LinkStack();
				
				//压栈
				for(var i=1;i<21;i++){
					linkStack.push(i);
				}
				console.log("压栈->" + linkStack.toString());
				
				//退栈
				linkStack.pop();
				linkStack.pop();
				linkStack.pop();
				console.log("退栈->" + linkStack.toString());
				
				//清空栈
				linkStack.clear();
				console.log("清空栈->" + linkStack.toString());
				
			}
			
			test();
		</script>
	</head>
	<body>
	</body>
</html>

相关推荐:

js的代码如何进行压缩?js代码压缩的简单方法

Nodejs中buffer是什么?Nodejs中buffer类的用法

热心网友 时间:2022-04-22 16:48

栈分顺序栈和链式栈,下面程序介绍了顺序栈的实现。 1.数组型
Const
m=栈表目数的上限;
Type
stack=array[1..m] of stype; {栈类型}
Var
s:stack;{栈}
top:integer;
2.记录型
const
m=栈表目数的上限;
type
stack=record
elem: array[1..m] of elemtp;
top:0..m; {栈顶指针}
end;
Var
s:stack;{栈} #include<stdio.h>#include<malloc.h>#defineDataTypeint#defineMAXSIZE1024typedefstruct{DataTypedata[MAXSIZE];inttop;}SeqStack;SeqStack*Init_SeqStack()//栈初始化{SeqStack*s;s=(SeqStack*)malloc(sizeof(SeqStack));if(!s){printf(空间不足\n);returnNULL;}else{s->top=-1;returns;}}intEmpty_SeqStack(SeqStack*s)//判栈空{if(s->top==-1)return1;elsereturn0;}intPush_SeqStack(SeqStack*s,DataTypex)//入栈{if(s->top==MAXSIZE-1)return0;//栈满不能入栈else{s->top++;s->data[s->top]=x;return1;}}intPop_SeqStack(SeqStack*s,DataType*x)//出栈{if(Empty_SeqStack(s))return0;//栈空不能出栈else{*x=s->data[s->top];s->top--;return1;}//栈顶元素存入*x,返回}DataTypeTop_SeqStack(SeqStack*s)//取栈顶元素{if(Empty_SeqStack(s))return0;//栈空elsereturns->data[s->top];}intPrint_SeqStack(SeqStack*s){inti;printf(当前栈中的元素:\n);for(i=s->top;i>=0;i--)printf(%3d,s->data[i]);printf(\n);return0;}intmain(){SeqStack*L;intn,num,m;inti;L=Init_SeqStack();printf(初始化完成\n);printf(栈空:%d\n,Empty_SeqStack(L));printf(请输入入栈元素个数:\n);scanf(%d,&n);printf(请输入要入栈的%d个元素:\n,n);for(i=0;i<n;i++){scanf(%d,&num);Push_SeqStack(L,num);}Print_SeqStack(L);printf(栈顶元素:%d\n,Top_SeqStack(L));printf(请输入要出栈的元素个数(不能超过%d个):\n,n);scanf(%d,&n);printf(依次出栈的%d个元素:\n,n);for(i=0;i<n;i++){Pop_SeqStack(L,&m);printf(%3d,m);}printf(\n);Print_SeqStack(L);printf(栈顶元素:%d\n,Top_SeqStack(L));return0;}定义stack的简单代码:
stack<int> sta;
入栈:sta.push(x);
出栈:sta.pop();
判断栈的大小: sta.size();
判断栈是否为空:sta.empty();

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
老师侮辱学生是否犯法 开启河南航拍新篇章 河南省航拍协会第一次会员代表大会召开 我想问下poscer m-3032款型手表售价是多少??? wp6m是啥意思 看图软件哪个好哪个看图软件好 5款强大到离谱电脑软件,都是效率神器!从此远离加班 在武汉买一套房大概要多少钱 武汉华润翡翠城的优缺点 k12教育为什么会被整顿 国家为什么要叫停K12教育? c++的“栈”是什么啊? 灵芝吃法是什么?食用量是多少? 灵芝的一般食用量是多少,吃多了会有副作用吗? 出栈的栈基本概念 灵芝子实体在食品生产中的使用范围及限量是多少? c++关于栈的问题 栈的过程 什么是栈,栈的基本运算是什么? 请问, 由于编译过程中出现异常...异常消息为: 值不能为 null。 参数名: format。最后怎么解决的? 异常详细信息: System.ArgumentNullException: 值不能为空。 有关java.lang.NumberFormatException: null的问题 java.lang.NumberFormatException: null 乘法口诀表儿歌快速记忆 求助异常详细信息:System.ArgumentNullException:值不能为空 java出现 NullPointException异常解决方法 java异常处理,异常为,nullpointerexceptino,信息是,null 粤苗app显示服务端异常null API空指针异常:null是什么意思 申报扣缴个人所得税报告表时 显示纳服支撑平台业务处理失败!异常信息为:null 1行0列解析异常null是什么意思 详细说明堆栈的功能及操作原理,及堆栈操作时如何入栈和出栈. 找个男女干呢事的网站 灵芝适合哪些人群食用? 卫生部哪个文件批准灵芝可用作保健食品 我问的是男女干事的好网站 求:男女唐装或旗袍一件代发网站 如何用EXTSIS替换手机主题壁纸 办公室风格之港式办公室装修 彬格手环怎么设置时间 重 庆装 修公 司做港式 风格设计装修的 有吧? 主板芯片组matrox显卡是什么显卡? 港式风格装修让你无法抗拒的三大特色 VIA的芯片组指的是什么? 港式装修风格有哪些? 港式风格装修多少钱价格参考和特点 港式装修风格有哪些特点 家装公司好做吗? 都说SIS的芯片不好~~究竟怎么不好了??就因为是亚洲人生产的?? 港式豪华装修的基本原则和细节设计 装修有多少种风格