数组(table)
大小不固定,可动态增长。
数组默认的key是从1开始的连续自然数,也可以根据需要从任意值开始。
a = {}
for i = -5, 5 do
a[i] = 0
end
for k, v in paris(a) do
print(k, v)
end
循环以上for语句,k(key)将从-5开始至5。
数组在在创建时可以同时初始化数组:
suqares = {1, 4, 9, 16}
矩阵
table嵌套
mt = {}
for i = 1, N do
mt[i] = {}
for j = 1, M do
mt[i][j] = 0
end
end
三角形矩阵,可节约内存
mt = {}
for i = 1, N do
mt[i] = {}
for j = 1, i do
mt[i][j] = 0
end
end
通过第一个索引乘以一个常量,在加上第二个索引
mt = {}
for i = 1, N do
local aux = i * M
for j = 1, M do
mt[aux + j] = 0
end
end
稀疏矩阵:矩阵中大多数元素是0或者nil。因为有效元素之间存在空洞(nil),无法对稀疏矩阵使用长度运算符。
链表
实现一个只有两个域:值和指针的列表
list = nil
list = {next = list, value = v}
遍历链表
local l = list
while l do
visit l.value
l = l.next
end
队列及双端队列(学习中)
略
反向表
day = {"Mon", "Tues", "Wed", "Thu", "Fri", "Sat", "Sun"}
revDay= {}
for k, v in pairs(days) do
revDay[v] = k
end
不用遍历搜索,直接用名称找出一天的名称和在一周里的位置