有关数据结构的区别

1、TypedArray

ArrayBuffer对象作为内存区域可以存放多种类型的数据。同一段内存,不同数据有不同的解读方式,这种解读方式称为“视图(view)”。ArrayBuffer有两种类型的视图,一种是类型化数组视图(TypedArray),另一种是数据视图(DataView)。类型化数组视图的数组成员都是同一个数据类型,后者的数组成员可以是不同的数据类型。

TypedArray视图一共有9种类型,每一种视图都是一个构造函数。

这些视图实现了数组接口,均有length属性,都可以使用方括号运算符来获取单个元素,所有数组方法都可以在其上面使用。普通数组和TypedArray数组的差异主要在以下方面:

  • 1、TypedArray数组的所有成员都是同一种类型。
  • 2、TypedArray数组的成员是连续的,不会有空位,不存在稀疏数组的情况。
  • 3、TypedArray数组成员的默认值是0。

TypedArray数组只是一个视图,本身不存储数据,它的数据都存储在底层的ArrayBuffer对象中,要获取底层对象必须使用buffer属性

数据结构 - 栈

定义:

只允许在一端进行插入或删除操作的线性表。首先,栈是一种线性表,但限定这种线性表只能在某一段进行插入和删除操作

栈顶(Top):线性表允许进行插入和删除的一端。

栈底(Bottom):固定的,不允许进行插入和删除的另一端

空栈:不含任何

栈的基本操作

  1. InitStack(&S):初始化空栈S
  2. StackEmpty(S):判断一个栈是否为空
  3. Push(&S,x):进栈,若栈未满,则将x加入使之成为新栈顶
  4. Pop(&S,&x):出栈,若栈非空,则将栈顶元素,并用x返回
  5. GetTop(S,&x):读栈顶元素,若栈顶元素非空,则用x返回栈顶元素
  6. DestroyStack(&S):销毁栈,并释放栈S占用的存储空间

3、二叉树

<script>
        // 创建二叉树的节点
        // 二叉树包含:自身数据(data),左节点(left),右节点(right),显示自己的数据(show)
        function Node(data,left,right){
            this.data = data;
            this.left = left;
            this.right = right;
            this.show = show;
        }
        // 声明二叉树的构造函数
        // 二叉搜索树(binary search tree),也叫二叉排列树
        function BST() {
            this.root = null; //默认节点为null
            this.insert = insert; // 插入操作
            this.inOrder = inOrder; // 中序遍历
            this.getMin = getMin; // 找出最小值
            this.getMax = getMax; // 找出最大值
            this.find = find; // 找出指定数据
        
        }
       
    </script>

4、set数据结构

<script>
        // ES6提供了新的数据结构Set
        // 类似于数组,成员的值都是唯一的,没有重复的

        // 创建Set数据结构 
        // const s = new Set()

        // Set函数可以接受一个数组作为参数,用来初始化
        const x = new Set([1,4,6,8,3,6])  
        console.log(x); // Set(5) {1, 4, 6, 8, 3}
        console.log(x.size); // 5

        // 利用Set进行数组去重
        let arr = [1,44,35,67,35,44]
        let set = new Set(arr)
        console.log(set); // Set(4) {1, 44, 35, 67}
        console.log([...set]); // [1, 44, 35, 67]
    </script>

5、set增删改查方法

 <script>
        const x = new Set();

        // add添加
        x.add('s').add('l')
        console.log(x.size); // 2
        console.log(x); // Set(2) {'s', 'l'}

        // delete:删除
        const result = x.delete('l'); // 删除成功后返回布尔值 true
        console.log(result); // 删除成功后返回布尔值 true
        console.log(x.size); // 1
        console.log(x); // Set(1) {'s'}

        // has:判断是否是其成员 have-has
        const resultOne = x.has('s')
        const resultTwo = x.has('l')
        console.log(resultOne); // true
        console.log(resultTwo); // flase

        // clear:清空成员 
        x.clear()
        console.log(x.size); // 0


    </script>   

 记事本

<body>
    <div id="app">
      <h2>记事本</h2>
      <div class="main">
        <input type="text" v-model="color" @keyup.enter="add"  placeholder="内容在这里输入"/>
        <ul>
          <li v-for="(item,index) in list" id="list">
            <div class="content"><span id="1">{{index+1}}.{{item}}</span> </div>
            <button @click="remove(index)">❌</button>
          </li>
        </ul>
        <p class="empty" v-if="list.length==0">暂无内容...</p>
      </div>
      <div class="bottom">
        <span>合计:{{list.length}}</span>
        <span @click="list=[]">清空</span>
      </div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
      new Vue({
        el: '#app',
        data: {
          color:'',
          list: [
          { id: 1,color: '黑色'},
          { id: 2,color: '紫色'},
          { id: 3,color: '红色'},
          // { id: 4,color: '绿色'},
          ],
        },
        methods: {
          add() {
            if (this.color) {
              this.list.unshift({id: Date.now(), color: this.color })
              this.color = ''

            }
          },
          remove(id) {
            this.list = this.list.filter(v => v.id !== id)

          },

        },
      })
    </script>
  </body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值