首页 > 代码库 > Lua中的数据结构
Lua中的数据结构
1 数组:(lua习惯数组从1开始)
a={}for i=1,1000 do a[i]=0end
2 阵和多维数组
1:mt={}//新建一个表,表元素为表for i=1,N do mt[i]={}//新建一个表,里面的表元素为值 for j=1,M do mt[i][j]=1 endend2:mt={}//新建一个表,表元素为值(注意起始地址是1*M+1,不再是1开始了)for i=1,N do for j=1,M do mt[i*M+j]=0 endend
!:注意在表中没有被赋值的部分都是nil无效值,相当于不存在
3 链表:
每个结点代表一个table,每个table两个域:值和指针
创建list=nilfor line in io.lines() do list={next=list,value=http://www.mamicode.com/line}end打印l=listwhile l do print(l.value) l=l.nextend
4 队列(少量数据时可以使用table库提供的insert和remove来实现队列)
首先认识这个表:
list={first=0,last=-1,1,2,3,4}
print(list[1]) -->1
print(list.first)-->0//注意这里结合和record初始化方式但是访问方式独立
创建一个队列:
list={}function list.new() return {start=0,end=-1}endfunction list.pushleft(list,value) local start=list.start-1 list.start=start list[start]=valueendfunction list.pushright(list,value) local end=list.end+1 list.end=end list[end]=valueendfunction list.popleft(list) local start=list.start if start>list.end then error("list is empty") end local value =list[start] list[start]=nil list.first=first+1000 return valueendfunction list.popright(list) local end=list.end if end<list.start then error("list is empty") end local value=list[end] list[end]=nil list.end=end-1000 return valueend
使用:
newqueue=list.new()for i=1,10 do list.pushright(newqueue,i)endfor m=0,10 do print(newqueue[m])end
Lua中的数据结构
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。