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