Lua 笔记--数据结构

本文涉及的产品
语种识别,语种识别 100万字符
文档翻译,文档翻译 1千页
文本翻译,文本翻译 100万字符
简介:
a = {}    --新建一个数组
for i=1, 1000 do
    a[i] = 0
end

        在Lua中,有两种方式来表示矩阵。第一种是使用一个“数组的数组”,也就是一个table 中的每个元素是另一个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
    for j=1, M do
        mt[(i-1)*M + j] = 0
    end
end

        链表的创建:

list = nil

        在表头插入一个元素,元素值为v:

list = {next=list, value=v}

        遍历此列表:

local l = list
while l do
    <访问l.value>
    l = l.next
end

        队列的创建:

List = {}
function List.new()
    return {first=0, last=-1}
end

        在队列两端插入或删除元素:

function List.pushfirst(list, value)
local first = list.first - 1
list.first = first
list[first] = value
end

function List.pushlast(list, value)
local last = list.last + 1
list.last = last
list[last] = value
end

function List.popfirst(list)
local first = list.first
if first > list.last then error("list is empty") end
local value = list[first]
list[first] = nil        --为了允许垃圾收集
list.first = first + 1
return value
end

function List.poplast(list)
local last = list.last
if list.first > last then error("list is empty") end
local value = list[last]
list[last] = nil        --为了允许垃圾收集
list.last = last - 1
return value
end

        逐行的读取一个文件:

local t = {}
for line in io.lines() do
    t[#t + 1] = line .."\n"
end

local s = table.concat(t)

函数table.concat 会将给定列表中的所有字符串连接起来,并返回连接的结果。

        concat函数还有第二个可选参数,可以指定一个插在字符串间的分隔符:

local t = {}
for line in io.lines() do
    t[#t + 1] = line
end

s = table.concat(t, "\n") .."\n"

目录
相关文章
|
6月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--希尔排序
数据结构与算法(Java篇)笔记--希尔排序
|
5月前
|
存储 算法
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
【单向链表】数据结构——单向链表的介绍与代码实现&笔记
|
5月前
|
存储 算法
【树】数据结构——树和二叉树的概念&笔记
【树】数据结构——树和二叉树的概念&笔记
|
5月前
|
算法 Java 索引
12.12_黑马数据结构与算法笔记Java
12.12_黑马数据结构与算法笔记Java
43 1
|
4月前
|
存储 算法 C语言
软考中级之数据库系统工程师笔记总结(二)数据结构与算法
软考中级之数据库系统工程师笔记总结(二)数据结构与算法
35 0
|
5月前
|
存储 算法 Linux
【内核链表】数据结构——深入理解内核链表的概念和操作&笔记
【内核链表】数据结构——深入理解内核链表的概念和操作&笔记
【循环链表】数据结构——单向循环链表和双向循环链表操作&笔记
【循环链表】数据结构——单向循环链表和双向循环链表操作&笔记
|
6月前
|
存储 机器学习/深度学习 人工智能
【软件设计师—基础精讲笔记8】第八章 数据结构
【软件设计师—基础精讲笔记8】第八章 数据结构
88 0
|
6月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--快速排序
数据结构与算法(Java篇)笔记--快速排序
|
6月前
|
机器学习/深度学习 算法 搜索推荐
数据结构与算法(Java篇)笔记--归并排序
数据结构与算法(Java篇)笔记--归并排序