美文网首页
Lua学习笔记(7)——数据结构

Lua学习笔记(7)——数据结构

作者: 嘿小药罐 | 来源:发表于2017-03-17 16:48 被阅读139次

数组

1.使用整数来索引table即可在Lua中实现数组。因此数组没有一个固定大小。

初始化数组a后,间接定义了它的大小,因为任何对字段1~1000以外的访问都会返回一个nil,而不是0

2.然而在Lua中,习惯以1作为数组的其实索引,因为Lua库和长度操作符都遵循这个约定。

通过table构造式定义数组

矩阵与多维数组

1.Lua中有两种方法表示矩阵,第一种是使用一个数组的数组,也就是嵌套table;第二种就是将两个索引合并为一个索引,即第一个索引乘以一个适当的常量(变为一维数组)。

table嵌套实现一个n*m的矩阵 用索引的方式创建一个n*m的矩阵

2.特殊矩阵,例如稀疏矩阵,这种矩阵中的大多数元素为0或者nil,此时无法使用长度操作符。一般使用pairs且值遍历那些非nil的元素。使用pairs的迭代并不保证会按递增的次序来访问元素。如果需要保证次序,那么就需要链表了。

将矩阵的一行与一个常量相乘

链表

1.table实现链表是很方便的。每个节点以一个table来表示,一个“链接”只是一个节点table中的一个字段,该字段包含了对其他table的引用。实现一个基础的列表,其中的每个加点具有next和value两个字段,步骤如下:

先创建一个用作列表头的节点变量 在表头插入一个元素,元素值为v 遍历此列表

队列与双向队列

1.实现队列的一种简单方法是使用table库中insert和remove函数,用于在一个数组的任意位置插入或删除元素,并根据操作要求移动后续元素(移动的开销大)。一种更高效的实现是使用两个索引,分别用于首尾的两个元素。

队列 在队列头插入元素 在队列尾插入元素 删除队列头的元素 删除队列尾的元素

集合与无序组(bag)

1.表示集合,就是集合元素作为索引放入一个table中。那么对于任意值都无须搜索table,只需用该值来索引table并查看结果是否为nil。

初始化一个集合

2.包,有时也称为多重集合(Multiset),是每个元素可以出现多次的集合。包的表示类似于集合,只不过包需要将一个计数器与table的key关联。

要插入一个元素,需要递增其计数器 若要删除一个元素,需要递减其计数器,当计数器存在或大于0时,才保留它

字符串缓冲

典型的逐行读取一个文件 使用concat的逐行读取一个文件(减少性能开销)

P102

相关文章

  • Lua学习笔记(7)——数据结构

    数组 1.使用整数来索引table即可在Lua中实现数组。因此数组没有一个固定大小。 2.然而在Lua中,习惯以1...

  • 2017.5.25

    lua学习总结:数据结构: 使用Lua实现链表(单向链表和双向链表),队列 使用Lua保存图,用table保存,每...

  • 数据结构回顾学习-基础知识

    数据结构回顾学习笔记 这次数据结构回顾笔记,是我对数据结构回顾学习的笔记。回顾过程是参考易百教程网站上数据结构教程...

  • 学习小组笔记Day5-Jocelyn

    2020年7月7日学习笔记 数据结构 一、向量 二、数据框 问题:save(X,file="test.RData...

  • 2021-08-06_lua脚本学习笔记

    20210806_lua脚本学习笔记 1概述 1.1为什么lua脚本具有原子性 Redis保证以原子方式执行脚本,...

  • 2022-05-02_Lua脚本操作redis锁学习笔记

    20220502_Lua脚本操作redis锁学习笔记.md 1概述 释放锁要用 lua 脚本,把检查锁是不是本线程...

  • 2019-01-14

    Lua与C交互学习笔记 Lua与C交互是通过虚拟栈实现的 在C中调用Lua 方法一 栈中的情况如下表所示 方法二 ...

  • 数据结构—栈的简单应用

    最近决心重拾数据结构,从头深入学习理解一遍,由于最近使用最多语言是lua,因此以下示例皆使用lua语言 栈:它是一...

  • Lua学习笔记

    函数调用: lua函数在两种情况下,可以省略’()’:函数中参数是一个单独的字符串或者表。因此,myfunc{a=...

  • Lua 学习笔记

    1. dummy variables(虚变量) Usually,I reserve the identifier ...

网友评论

      本文标题:Lua学习笔记(7)——数据结构

      本文链接:https://www.haomeiwen.com/subject/kowenttx.html