Lua中的數據結構


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM