【Lua基础系列】之数据结构(多维数组,链表,队列)

             【Lua基础系列】之数据结构(多维数组,链表,队列)

 

    大家好,我是Lampard~~

    欢迎来到Lua基础系列的博客

    PS:本博客知识参考资料为:《Lua程序设计第四版》,该书由Lua的创始人2018年所编著,所以大家可以放心去吸收知识

   

    前文再续,书接上一回。

    今天讲的是如何在lua中实现常见的数据结构:数组,二维数组,链表,队列,栈

  

 (一)数组

   (1)一维数组

     常见的一维数组起始就是我们的lua中的table序列,我们可以直接通过表构造器在一句表达式中创建并初始化数组:

squares = {1,2,3,4,5,6,7,8}  --切记lua的table默认是从1开始的

   那么如果我们需要固定数组的大小,我们可以这样做:

  

获取数组的长度可以使用#array,插入删除可以使用table自带的insert和delete函数,所以一维数组十分简单。

 (2)二维数组 

  实现二维数组也不难,比如说我们要实现一个N*M二维矩阵,我们只需要把一个表中从1到N的索引都指向含有M个元素的表,

那么就能实现N*M的二维数组了。

 

 

(二)链表

  实现链表起始也很简单,我们只需要定义这样的一个表

list = { 
           value ,  -- value是数值类型的

           next     -- next是表类型的           
       }

那么我们就可以通过以下的方法来便利整个表,从而实现插入,删除,搜索等各种功能

 

(三)栈和队列

  栈和队列的插入都是可以通过#表取得整个结构的大小然后对【#表+1】来进行赋值

  他们的差别是如果要取出元素的额话,栈是从最末尾段取出,也就是直接把【#表】置为nil就可以了

  队列的话是需要把首个元素个取出并删除,此时我们可以调用table里面的remove函数,table.remove(表,1)来进行操作

  

 

是不是很简单? OK,今天的博客就到这里,谢谢大家!!!

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值