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

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.cnblogs.com/mmya/p/17323313.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:手动实现数据结构-栈结构 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • js处理层级数据结构的方法小结

    “JS处理层级数据结构的方法小结”是一篇讲解JavaScript如何处理嵌套数据结构的文章。在现代的web应用中,嵌套结构是非常常见的,比如JSON数据、树形数据等。以下是对该话题的详细讲解: 1. 嵌套数据结构的概念 指的是包含嵌套关系的数据类型,如数组、对象、树形结构、XML文档等。这些类型之间有着固定层级关系,包含多个层次的数据。嵌套数据结构的处理,往…

    数据结构 2023年5月17日
    00
  • C语言数据结构图的创建与遍历实验示例

    下面是“C语言数据结构图的创建与遍历实验示例”的完整攻略。 1. 创建数据结构图 1.1 创建图对象 首先需要创建一个图对象,可以使用邻接矩阵或邻接表来表示图。使用邻接矩阵表示时,将所有顶点的编号按照一定顺序排列在矩阵的行和列上,使用0或1表示两个顶点之间是否有边。使用邻接表表示时,需要一个array存储所有的顶点,数组中的每个元素包含一个链表,链表中存储与…

    数据结构 2023年5月17日
    00
  • Python实现二叉树的常见遍历操作总结【7种方法】

    下面是详细讲解“Python实现二叉树的常见遍历操作总结【7种方法】”的完整攻略。 1. 什么是二叉树 二叉树是一种树形结构,每个节点最多有两个子节点。二叉树的遍历是指按照一定的顺序访问二叉树中的所有节点。 2. 二叉树的遍历方法 以下是二叉树的七种遍历方法,包括前序遍历、中序遍历、后序遍历、层次遍历、Morris遍历、递归遍历和迭代遍历。 2.1 前序遍历…

    python 2023年5月14日
    00
  • python选择排序算法的实现代码

    Python选择排序算法的实现代码 选择排序是一种简单的排序算法,它的基本思想是每次从未排序的元素中选择最小的元素,将其放到已排序的元素末尾。在本攻略中,我们将介绍如何使用Python实现排序算法。 步骤1:实现选择排序算法 在使用Python实现选择排序算法之前,我们需要了解选择排序算法的本思想。选择排序算法的基本思想是每次从未排序的元素中选择最小的元素,…

    python 2023年5月14日
    00
  • Java数据结构之LinkedList的用法详解

    Java数据结构之LinkedList的用法详解 LinkedList简介 LinkedList是Java中的一个数据结构,它是一个双向链表,可以提供快速的插入和删除操作。LinkedList中的元素分别保存在每个节点中,每个节点包含了指向前一个节点和后一个节点的引用。 使用LinkedList的好处是,其可以快速的进行插入和删除操作,但是如果需要随机存取中…

    数据结构 2023年5月17日
    00
  • Python 十大经典排序算法实现详解

    下面是关于“Python 十大经典排序算法实现详解”的完整攻略。 1. 十大经典排序算法 排序法是计算机科学中最基本的算法之一,是 Python 开发者必须掌握的算法之一。Python 中常见的算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序、计数排序、桶排序、基数排序和鸽巢排序。下将逐一介绍这些算法的实现方法。 1.1 冒泡排序 冒泡排序算…

    python 2023年5月13日
    00
  • python递归计算N!的方法

    以下是关于“Python递归计算N!的方法”的完整攻略: 简介 阶乘是一个常见的数学问题,它表示一个正整数的所有小于等于它的正整数的乘积。在本教程中,我们将介绍如何使用Python递归计算N!,并提供一些示例说明。 Python递归计算N!实现 以下是使用Python递归计算N!的示例: def factorial(n): if n == 0: return…

    python 2023年5月14日
    00
  • JavaScript 数据结构之集合创建(1)

    当我们在编写JavaScript程序时,有时需要使用数据结构来组织和表示数据。其中之一是集合,它是一组无序且唯一的项的集合。这里就介绍如何在JavaScript中创建集合。 1. 集合定义 集合是一种不同于数组或对象,由一组彼此无关的元素组成的数据结构。集合中的元素是唯一的,即不允许重复元素。 2. 集合的操作 JavaScript中的集合可以支持以下常见操…

    数据结构 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部