手动实现数据结构-栈结构

这篇具有很好参考价值的文章主要介绍了手动实现数据结构-栈结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.栈结构

  • 是一种受限的线性结构。

  • 特点:先进后出

2.使用TS实现

 1 //封装一个栈  使用泛型类
 2 class ArrayStack<T=any>{//给一个默认值为any类型
 3 //定义一个数组,用于存储元素
 4 private data:T[]=[]
 5 //push:将元素压入栈中
 6 push(e:T):void{
 7   this.data.push(e)
 8 }
 9 //pop方法:将栈顶的元素弹出栈(返回出去并从栈顶移除)   
10 pop():T|undefined{
11   return this.data.pop()//pop返回的是删除的元素
12 }
13 //peek方法:看一眼栈顶元素
14 peek():T|undefined{
15   return this.data[this.data.length-1]
16 }
17 //isEmpty
18 isEmpty():boolean{
19   return this.data.length===0
20 }
21 size():number{
22   return this.data.length
23 }
24 }

 

3.使用JS实现

 1 // 栈类
 2     function Stack() {
 3         // 栈中的属性
 4         var items = []
 5 
 6         // 栈相关的方法
 7         // 压栈操作
 8         this.push = function (element) {
 9             items.push(element)
10         }
11         // 出栈操作
12         this.pop = function () {
13             return items.pop()
14         }
15         // peek操作
16         this.peek = function () {
17             return items[items.length - 1]
18         }
19         // 判断栈中的元素是否为空
20         this.isEmpty = function () {
21             return items.length == 0
22         }
23         // 获取栈中元素的个数
24         this.size = function () {
25             return items.length
26         }
27     }

 

4.相关题目

4.1 十进制转二进制

 1 function decToBinary(decimal:number):string{
 2   let stack=new ArrayStack<number>()
 3   
 4   //while:不知道循环次数,知道循环终止条件。for:知道循环次数
 5   while(decimal>0){
 6     let result=decimal%2
 7     stack.push(result)
 8     decimal=Math.floor(decimal/2)
 9   }
10   let str=''
11   while(!stack.isEmpty()){
12     str+=stack.pop()
13   }
14   return str
15 }

 

4.2有效的括号

 1 function isVaild(str:string):boolean{
 2   //创建一个栈结构 用于把存放右括号
 3   let stack=new ArrayStack()
 4   //遍历字符串中每一个字符,当遇到一个左括号就往栈里面添加对应的右括号。当遇到右括号时,就能让它与栈弹出的元素(刚添加进去的)比较,如果不相等,就说明没有成对出现。重要的就是一一对应(相应的左括号对应相应的右括号)。
 5   for(let i=0;i<str.length;i++){
 6     let item=str[i]
 7     switch(item){
 8       case '(':
 9         stack.push(')')
10         break;
11       case '{':
12         stack.push('}')
13         break;
14       case '[':
15         stack.push(']')
16         break;
17       default:
18         if(item!==stack.pop())return false
19         break;
20     }
21   }
22   //只有栈为空的时候,表明括号既一一对应又是双数
23   return stack.isEmpty()
24 
25 }

 文章来源地址https://www.toymoban.com/news/detail-416132.html

到了这里,关于手动实现数据结构-栈结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 带头双向循环链表:一种高效的数据结构

    💓 博客主页:江池俊的博客 ⏩ 收录专栏:数据结构探索 👉专栏推荐:✅cpolar ✅C语言进阶之路 💻代码仓库:江池俊的代码仓库 🔥编译环境: Visual Studio 2022 🎉欢迎大家点赞👍评论📝收藏⭐ 双向循环链表是一种复杂的数据结构,它结合了双向链表和循环链表的优点。与

    2024年02月05日
    浏览(53)
  • 一种使得大模型输出结构化数据的简易方法

    最近在用大模型跑一些数据,于是就不可避免的遇到了如何让大模型输出的格式便于处理这个问题。经过一些研究发现了一套比较有用的方法,在这里总结一下。 任务是这样的,我需要用大模型(比如ChatGPT,ChatGLM等等)对文本进行名词提取。输入一段文本,我需要大模型理

    2024年02月16日
    浏览(39)
  • 【数据结构】红黑树的删除(抽丝剥茧,带你理清每一种情况)

     红黑树的删除,较AVL树的删除比较抽象,同时也跟红黑树的插入的区别较大,但大体上的思路还是基于普通二叉搜索树的基础上进行讨论的。 浅浅的铺垫一下: 需要清楚普通二叉树的删除,可见AVL树的删除文章开头。 四种旋转的操作(只需操作)得熟记于心,可见AVL树的插

    2024年04月27日
    浏览(33)
  • 【数据结构】【王道】【数据结构实现】文章目录

    持续更新中。。。 数据结构 链接 顺序表实现及基本操作(可直接运行) 文章链接 无头结点单链表的实现及基本操作(可直接运行) 文章链接 带头结点单链表的实现及基本操作(可直接运行) 文章链接 双链表的实现及基本操作(可直接运行) 文章链接 循环链表的实现及

    2023年04月08日
    浏览(90)
  • 什么是T-SQL编程?T-SQL是Transact-SQL的缩写,是一种扩展了SQL(结构化查询语言)的编程语言,用于Microsoft SQL Server数据库管理系统中的数据管理和操作。T-

    什么是T-SQL编程? T-SQL是Transact-SQL的缩写,是一种 扩展了SQL(结构化查询语言) 的编程语言,用于Microsoft SQL Server数据库管理系统中的数据管理和操作。T-SQL支持创建 存储过程、触发器、函数 等高级特性,能够更加灵活地进行数据操作和处理。基本的T-SQL语法与标准SQL很相

    2024年01月21日
    浏览(94)
  • 【数据结构】结构实现:顺序存储模式实现堆的相关操作

    🚩 纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:数据结构 🔥该文章着重讲解了使用顺序结构实现堆的插入和删除等操作。  二叉树的顺序存储是指将二叉树中的所有节点按照一定的顺序(一层一层)存储到一个数组中。  我们可以通过数组下标来表示

    2024年02月08日
    浏览(47)
  • 数据结构之堆的结构与实现

    目录 一、堆的概念及结构 1.1堆的概念  1.2堆的性质 1.3堆的结构 二、堆的实现 2.1堆向下调整算法(父亲与孩子做比较)  2.2堆的向上调整算法(孩子与父亲做比较) 2.3堆的创建(向下建堆)  2.4向下建堆的时间复杂度 2.5堆的插入 2.6堆的删除 2.7堆的完整代码实现 三、堆的应

    2024年02月08日
    浏览(40)
  • 【数据结构 —— 二叉树的链式结构实现】

    树是一种非线性的数据结构,它是由n(n=0)个有限结点组成一个具有层次关系的集合。 把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 1.有一个 特殊的结点,称为根结点 ,根节点没有前驱结点 2.除根节点外, 其余结点被分成M(M0)个互不相交

    2024年02月05日
    浏览(54)
  • 数据结构-二叉树·堆(顺序结构的实现)

    🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🐻‍❄个人主页🎉:GOTXX 🐼个人WeChat : ILXOXVJE 🐼本文由GOTXX原创,首发CSDN🎉🎉🎉 🕊系列专栏:零基础学习C语言----- 数据结构的学习之路 🐓每日一句:如果没有特别幸运,那就请特别努力!🎉

    2024年02月05日
    浏览(44)
  • 【数据结构—二叉树的链式结构实现】

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、二叉树的存储结构 二、二叉树链式结构的实现 2.1手动构建一课树 2.2二叉树的遍历 三、二叉树链式结构的实现 3.1前序遍历(递归) 3.2中序遍历(递归) 3.3后序遍历(递归) 3.4层序遍历(非递

    2024年02月03日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包