【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)来进行操作