平时我们在其他语言中,经常会用到如数组,矩阵,队列和栈等一些数据结构,而 lua 似乎并没有这些数据类型,lua 只提供了 table 类型,但是通过 table 类型我们几乎可以实现所有常用的数据类型。
数组
数组的实现非常简单,table 的数据类型类似与 C# 中的字典,存储 kv 对,我们只取 value 即可。
local arr={1,2,3,6,4} | |
for key, value in pairs(arr) do | |
print(key,value) | |
end |
矩阵
矩阵也被称为多维数组,我们只需要嵌套一个 table 即可。
local mt={} | |
for i = 1, 10 do | |
mt[i]={} | |
for j = 1, 10 do | |
mt[i][j]=0 | |
end | |
end |
链表
对于像链表这样的数据结构,我们可以方便的通过一个指针域实现。
-- 链表
local l=nil
local l2={next=nil,value=10}
l={next=l2,value=200}
while l do
print(l.value)
l=l.next
end
队列和栈
下面以队列为例,栈也是类似的构造:
-- 队列和栈
Queue={}
function Queue.new()
return{first=0,last=-1}
end
function Queue.push(queue,value)
local first=queue.first-1
queue.first=first
queue[first]=value
end
function Queue.pop(queue)
local last=queue.last
if queue.last>last then
error("queue 为空")
end
local value=queue[last]
queue[last]=nil
queue.last=last-1
return value
end
local qq=Queue.new()
Queue.push(qq,5)
Queue.push(qq,8)