Lua 数据结构
来源:互联网 发布:过期未注册域名查询 编辑:程序博客网 时间:2024/05/01 04:55
数组
虽然Lua可以自定义下标,但在Lua中习惯上数组的下标从1开始,Lua的标准库与此习惯保持一致,因此如果你的数组下标也是从1开始你就可以直接使用标准库的函数,否则就无法直接使用。
a={};for i=1,1000 do a[i]=0;endprint("数组 a 的长度:" .. #a); --计算长度操作符 #squares={1,2,3,4,5}; --在一个表达式中初始化数组
矩阵与多维数组
在Lua中,有两种方式来表示矩阵。第一种是使用一个”数组的数组”,也就是说,一个table中的每个元素是另一个table。例如:
mt={}for i=1,N do mt[i]={} --由于在Lua中table是一种对象,因此在创建矩阵时,必须显示地创建每一行。 for j=1,M do mt[i][j]={} endend
第二种方式是将两个索引合并为一个索引。例如:
m={}for i=1,N do for j=1,M do m[(i-1)*M+j]= 0; endend
链表
由于table是动态的实体,所以在Lua中实现链表是很方便的。每个节点以一个table来表示,一个”链接”只是节点table中的一个字段,该字段包含了对其他table的引用。
list = nil for i = 1, 10 do list = { next = list ,value = i} --插入元素end local l = list while l do --遍历列表 --print(l.value) l = l.next end
队列与双向队列
List={};function List.new() return {first=0,last=-1};end--队列头插入function List.pushfirst(list,value) local first=list.first-1; list.first=first; list[first]=value;end--队列尾插入 function List.pushlast(list,value) local last=list.last+1; list.last=last; list[last]=value;end--返回队列头function List.popfirst(list) local first=list.first; if first>list.last then error("list is empty")end local value=list[first]; list[first]=nil; list.first=first+1; return value;end--返回队列尾function List.poplast(list) local last=list.last; if list.first>last then error("list is empty")end local value=list[last]; list[last]=nil; list.last=last-1; return value;end--测试1list=List.new(); --创建一个队列for i=1,10,2 do --向队列头一次插入value 1,3,5,7,9 他们的下标为-1,-2,-3,-4,-5 List.pushfirst(list,i);endfor i=-5, #list do --first 是从0 开始的,压入栈的时候 第一个元素 first = -5 print(list[i]) end--测试2for i=1,10,2 do --向队列尾部依次插入value,下标是从1开始。 List.pushlast(list,i);endfor i=0, #list do --因为last 是从-1 开始的,压入栈的时候 第一个元素 last = 0 print(list[i]) endprint(List.popfirst(list)); --9 队列头部插入的最后一个值为9print(List.poplast(list)); --9 队列尾部插入的最后一个值为9
集合
使用字符串来搜索这个数组,只需用该值来索引table,并查看结果是否为nil。在Lua中,将集合元素作为索引放入一个table中。
reserved = { ["while"] = true, ["end"] = true, ["function"] = true, ["local"] = true, } for k,v in pairs(reserved) do print(k,"->",v) end
若要使初始化过程变得更清晰,可以使用以下代码来创建集合:
function Set(list) local set={} for _,l in ipairs(list) do set[l]=true endreturn setreserved=Set{"while","end","function","local",}
0 0
- Lua数据结构
- lua数据结构
- Lua数据结构
- lua 数据结构
- Lua 数据结构
- Lua数据结构。
- lua数据结构
- lua的数据结构
- Lua的数据结构
- lua的数据结构 -- 数组
- lua的数据结构 -- 链表
- lua的数据结构 -- 队列
- lua中Table数据结构
- Lua 常用数据结构
- Lua数据结构 — T
- 细说Lua常用数据结构
- Lua学习之数据结构
- Lua学习笔记-数据结构
- 2015年, 常见页面问题及其解决方法--css篇
- 居中相对定位和绝对定位的元素
- iso小练习,获取界面的空间,变量字符串int循环判断,get请求数据
- leetcode刷题之旅——215. Kth Largest Element in an Array
- C#加密整理
- Lua 数据结构
- POJ1088 滑雪(动态规划+深搜DFS)
- android的Space控件使用方式
- lavarel框架学习之使用ajax提交表单方法详解
- JSPatch详解
- 滑动改变toolbar透明度
- Creating Custom Views
- redis 主从复制配置
- 最新win10镜像下载