当前位置: 首页 > 工具软件 > Table Library > 使用案例 >

Table(笔记)

岑明辉
2023-12-01

数组(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

不用遍历搜索,直接用名称找出一天的名称和在一周里的位置

 

 

 类似资料: