js——两个栈Stack实现一个队列Queue

news/2024/5/20 5:58:45 标签: js, ,

基本概念理解:

/*

(stack)又名,它是一种运算受限的线性表。
其限制是仅允许在表的一端进行插入和删除运算。
这一端被称为顶,相对地,把另一端称为底。
向一个插入新元素又称作进、入或压,它是把新元素放到顶元素的上面,使之成为新的顶元素;
从一个删除元素又称作出或退,它是把顶元素删除掉,使其相邻的元素成为新的顶元素。

队列(queue)是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,
而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。

*/

<a class=栈图片" class="has" height="270" src="https://img-blog.csdnimg.cn/20190325095248920.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI3OTU0NjQz,size_16,color_FFFFFF,t_70" width="250" />    队列图片

                                                                                  队列

 

JavaScript代码实现:

//两个数组模拟的行为
var stack1=[],//存储
    stack2=[];//辅助

//是后入先出(LIFO,last in first out),队列是先入先出(FIFO,first in first out)

//队列插入元素函数
function push(ele)
{
    //模拟队列的push操作,直接往存储stack1中推入即可
    //但是要考虑辅助stack2中还存在值的情况,需要先将辅助中的值推回存储中
    while(stack2.length !== 0){
        stack1.push(stack2.pop());
    }
    stack1.push(ele);
}

//队列删除元素函数
function pop()
{
    //模拟队列的pop操作则要考虑的后入先出特性,需要先将存储stack1中的数组,推入辅助stack2,然后辅助弹出元素
    while(stack1.length !== 0){
        stack2.push(stack1.pop());
    }
    return stack2.pop();
}

 


http://www.niftyadmin.cn/n/1426107.html

相关文章

使用struts

使用struts <action-mappings ><action path"/login" type"com.yourcompany.struts.action.LoginAction" ><forward name"ok" path"/tt1.jsp" /></action></action-mappings>

在浏览器中输入URL并回车后都发生了什么?

震惊脸&#xff0c;从没想过这是一个问题! 然而&#xff0c;这是前端小白必须要深刻了解的问题。前端面试经常问道&#xff0c;下面的每个阶段都可以大做文章&#xff01;&#xff01;&#xff01; 在浏览器网址栏输入baidu.com&#xff0c;点击enter出现百度搜索引擎。在这很…

讲讲浏览器的缓存机制

问题的开端是由http响应状态码304引出的&#xff01; 一般而言&#xff0c;第一次访问一个网站&#xff0c;返回的状态码是200。那304状态码有什么用&#xff1f; 这跟浏览器性能优化分不开。 例如&#xff0c;浏览器直接使用缓存而不发起请求&#xff0c;减少请求&#xff…

JavaScript——旋转数组的最小数字

题目描述 把一个数组最开始的若干个元素搬到数组的末尾&#xff0c;我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转&#xff0c;输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转&#xff0c;该数组的最小值为1。 NOTE&#xff1a;给出的所有…

jsp防sql注入

在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement.基于以下的原因:一.代码的可读性和可维护性.虽然用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性…

JavaScript——菲波那切数列

题目描述 大家都知道斐波那契数列&#xff0c;现在要求输入一个整数n&#xff0c;请你输出斐波那契数列的第n项&#xff08;从0开始&#xff0c;第0项为0&#xff09;。 n<39 function Fibonacci(n) { //自己的方法/*if(n0) return 0;if(n1) return 1;var count1;var …

JavaScript——青蛙跳台阶

题目描述 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法&#xff08;先后次序不同算不同的结果&#xff09;。 function jumpFloor(number) {// write code here//自己先写几个&#xff0c;多少台阶几种跳法。属于找规律…

JavaScript——变态跳台阶

题目描述 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 function jumpFloorII(number) {// write code here//青蛙跳台阶的plus版&#xff0c;同样从一个台阶开始&#xff0c;手动计算有多少种跳…