首页 > 代码库 > 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中的数据结构