Lua中的数据结构
2016-09-13 17:52
211 查看
1 数组:(lua习惯数组从1开始)
a={} for i=1,1000 do a[i]=0 end
2 阵和多维数组
1: mt={}//新建一个表,表元素为表 for i=1,N do mt[i]={}//新建一个表,里面的表元素为值 for j=1,M do mt[i][j]=1 end end 2: mt={}//新建一个表,表元素为值(注意起始地址是1*M+1,不再是1开始了) for i=1,N do for j=1,M do mt[i*M+j]=0 end end
!:注意在表中没有被赋值的部分都是nil无效值,相当于不存在
3 链表:
每个结点代表一个table,每个table两个域:值和指针创建 list=nil for line in io.lines() do list={next=list,value=line} end 打印 l=list while l do print(l.value) l=l.next end
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} end function list.pushleft(list,value) local start=list.start-1 list.start=start list[start]=value end function list.pushright(list,value) local end=list.end+1 list.end=end list[end]=value end function 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 value end function 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 value end
使用:
newqueue=list.new() for i=1,10 do list.pushright(newqueue,i) end for m=0,10 do print(newqueue[m]) end
相关文章推荐
- lua的数据结构 -- 链表
- Lua数据结构 — 闭包(四)
- lua基础【三】唯一数据结构table表
- 通过例子学习Lua(3) ---- Lua数据结构 (转)
- Cocos2d-x 脚本语言Lua基本数据结构-表(table)
- lua 文件路径 字符串处理 数据结构 正则表达式 Class 程序集
- Lua 数据结构--Closure
- lua中的数据结构-table常用函数库
- Lua学习笔记(八):数据结构
- lua数据结构-数组
- Lua学习之5:基本数据结构-表(Table)
- 通过例子学习Lua(3) ---- Lua数据结构
- lua数据结构之table的内部实现
- Lua的数据结构
- lua基础【三】唯一数据结构table表
- 数据结构 链表的lua实现 仿照C++中list 实现
- Step By Step(Lua数据结构)
- Lua中使用table实现的其它5种数据结构(数组、链表、队列、集合和包、StringBuild)
- Lua数据结构的学习笔记