stack 数据结构
栈定义
栈实现

class Stack {
constructor() {
this.items = []
this.size = 0 //元素个数
}
/**
* 压栈:栈顶增加一个元素,并且个数+1
*/
push(item) {
this.items[this.size++] = item
}
/**
* 出栈
*/
pop() {
// 删除数组的最后一个 个数-1
let top = this.items[--this.size]
this.items.length = this.size
return top
}
/**
* 查看栈顶元素
*/
peek() {
return this.items[this.size - 1]
}
/**
* 判断栈是否为空
*/
isEmpty() {
return this.size === 0
}
/**
* toString 方法
*/
toString() {
}
}
用数组模拟栈:
const arr=[]
arr.push() 压栈 arr.pop() 出栈 arr[arr.length-1] 查看栈顶元素
栈的例子
判断回文数
/**
* 判断是否是回文数
* @param {string} str
* @returns{boolean}
*/
function isPalindRome(str) {
const arr = [] //用数组来模拟栈结构
let str1 = '' //逆序str
for (const char of str) {
arr.push(char) //入栈操作
}
while (arr.length > 0) {
str1 += arr.pop() // 出栈操作 arr改变
}
return str === str1 }
stack 数据结构的更多相关文章
- 结合stack数据结构,实现不同进制转换的算法
#!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...
- openssl stack 数据结构栈基本操作
堆栈是两种不同的数据结构: 堆:数据先进先出: 栈:数据先进后观: 在stack.h 中 openssl 为我们提供了一个通用的栈,利用提供的接口我们可以方便的用此栈来存放开发中的任意数据. open ...
- 使用javascript的stack数据结构,实现进制转换
function Stack() { var items = []; this.push = function(element){ items.push(element); } this.pop = ...
- 数据结构:二级指针与Stack的数组实现
[简介] Stack,栈结构,即传统的LIFO,后进先出,常用的实现方法有数组法和链表法两种.如果看过我上一篇文章<数据结构:二级指针与不含表头的单链表>,一定会看到其中的关键在于,利用v ...
- 【图数据结构的遍历】java实现广度优先和深度优先遍历
[图数据结构的遍历]java实现广度优先和深度优先遍历 宽度优先搜索(BFS)遍历图需要使用队列queue数据结构: 深度优先搜索(DFS, Depth First Search)的实现 需要使用到栈 ...
- (转)st(state-threads) coroutine和stack分析
目录(?)[-] STACK分配 THREAD初始化栈 Thread启动和切换 Thread退出 Thread初始线程 Thread生命周期 st(state-threads) https://gi ...
- leetcode155 Min Stack
题意:模拟一个最小栈,可以push,pop,top,和返回栈中最小值. 思路:已经忘了栈是怎么构建的了,晕···尝试了半天,错误,发现直接用stack数据结构来做最方便,再用一个栈来存最小值.值得注意 ...
- LeetCode 155:最小栈 Min Stack
LeetCode 155:最小栈 Min Stack 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- ...
- cs107
基本类型:bool,char,short,int,long,float,double 对于char,short,int,long: 多字节类型赋值给少字节类型,对低字节的细节感兴趣,位模式拷贝. 少字 ...
随机推荐
- python3.4嵌套循环项目:买房分期付款(1)
#案例:买房分期付款24万(10年期限) i=1#定义年份sum1=0while i<=10: print("第",i,"年到了......") j=1# ...
- 新浪、腾讯、淘宝为何如此重视Web前端?前端入门容易吗?
为什么新浪.搜狐.网易.腾讯.淘宝等在内的各种规模的IT企业,都对web前端越来越重视了呢?小编为您揭晓答案! web前端的由来 以前会Photoshop和Dreamweaver就可以制作网页.随着时 ...
- IDEA新增类的快捷键
1.选中新建类所在包,鼠标右击.然后依次点击New——>Java Class就可以弹出输入类名的弹出框了. 2.选中新建类所在包,按下alt+insert然后选择弹出框中的Jav ...
- idea括号选中时出现一条下滑线(突出显示)打开或关闭方法
打开设置 Editor->code Editing->Matched brace取消这个对勾
- git使用-克隆仓库
1.git clone 克隆地址 克隆地址: 2.克隆命令
- ALGEBRA-前言
“当你读一页不到一个小时的话,可能是你读太快了” 哈哈 可以 慢慢品
- c/c++ 感悟 2008-10-03 02:08
许久没有坐在电脑前写东西了.除了密密麻麻的英文小虫子,还是英文小虫子.今天不是解决bug,明天就是在创造bug,一句话不在bug中沉默就在bug中爆发.或许喜欢小宇宙爆发的样子吧,那样的感觉总是让人热 ...
- Android ScrollView嵌套ViewPager,嵌套的ViewPager无法显示
记录:ScrollView嵌套ViewPager,嵌套的ViewPager无法显示 项目中所需要布局:LinearLayout中包含(orientation="vertical") ...
- 一文说通Jwt、Session、Cooike区别
JWT 全称是 JSON Web Token,是目前非常流行的跨域认证解决方案,在单点登录场景中经常使用到. 有些人觉得它非常好用,用了它之后就不用在服务端借助 redis 实现认证过程了,但是,还有 ...
- Trapdoors for Hard Lattices and New Cryptographic Constructions
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 以下是对本文关键部分的摘抄翻译,详情请参见原文. Abstract 我们展示了如何构造各种“trapdoor”密码工具,假设标准格问题的最 ...