--[[
矩阵和多维数组
稀疏矩阵:矩阵的大部分元素都为空或者0
]]
-- 创建5*6的二维数组
mt = {}
for i = 1, 5 do
mt[i] = {}
for j = 1, 6 do
mt[i][j] = 0
end
end
-- 创建5*6的二维数组
mt1 = {}
for i = 1, 5 do
for j = 1, 6 do
mt1[i * 6 + j] = 0
end
end
print(table.getn(mt))
print(table.getn(mt1)) -- Output:36,因为下标最大是5 * 6 + 6
--[[
链表
]]
-- table之间的赋值是浅拷贝,即拷贝指针
l1 = {1, 2, 3}
l2 = l1
l2[2] = 5
print(l1[2])
l1[1] = nil
print(l2[1])
-- 初始化单链表
function initSingleList(t)
list = nil
for _, v in ipairs(t) do
-- 这里的两个list已经是两个不同的对象,左边list的next是另一个list
-- 每个list都只有两个域,next和value
list = {next = list, value = v}
end
return list
end
t = {1, 2, 3, 4, 5}
list = initSingleList(t)
-- 输出单链表元素
l = list
while l do
print(l.value)
l = l.next
end