您的位置:首页 > 理论基础 > 数据结构算法

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: