lua之链表的实现】的更多相关文章

-- lua链表的实现 node = {} list = node --初始化,构建一个空表 function init() list.data = --我将头结点的数据域存放链表的长度,以免浪费空间 list.next = nil end --向链表的尾部添加数据 function addRear(d) node.next={}--建立一个节点,相当于malloc一个节点 node = node.next node.next = nil node.data = d list.data = li…
List = {} --创建一个节点 function List.new(val) return {pnext = nil, value = val} end --往一个节点后添加一个节点 function List.addNode(nodeParent, nodeChild) nodeChild.pnext = nodeParent.pnext nodeParent.pnext = nodeChild return nodeChild end --输出链表 function List.prin…
1.lua的环境变量和函数 (1)_G表  (个人习惯遍历下_G 看看当前环境支持什么库 很多库不是默认就支持的 需要按照流程导入或者加载) 一个全局变量(非函数),内部储存有当前所有的全局函数和全局变量的table  环境(参见 §2.2). Lua 自己不使用这个变量:改变这个变量的值不会对任何环境造成影响,反之亦然.(使用函数setfenv() 可以改变运行环境) 理解_G https://www.jianshu.com/p/7b8ae23ecd81 (2)_ENV表 储存这个环境(代码块…
链表 由于table是动态的实体,所以在Lua中实现链表是很方便的.每个节点以一个table来表示,一个“链表”只是节点table中的一个字段. 该字段包含了对其他table的引用.例如,要实现一个基础的列表,其中每个节点具有两个字段:next和value 创建一个链表: list = nil list = {next = list,value = v} --遍历此链表 local l = list while l do <访问 l.value > l = l.next end 也可以参考之前…
我们来看看lua vm在解析下面源码并生成bytecode时的整个过程: foo = "bar" local a, b = "a", "b" foo = a 首先我们先使用ChunkySpy这个工具来看看vm最终会具体生成什么样的vm instructions 在这里,开头为[数字]的行是vm真正生成的字节码,我们看到一共生成了六行字节码.首先loadk将常量表中下标为1的常量即"bar"赋给寄存器0:然后setglobal将…
lua的很多语法跟matlab很像 最基本的赋值是一样的 循环和选择判断后面必须跟一个关键字:do和then ,, do ... end if - then - end table是lua的唯一一种数据结构,但是可以用它来构造数组.链表.字典等. -- Dict literals have string keys by default: t = {key1 ='value1', key2 =false} -- String keys can use js-like dot notation: p…
在这一篇文章中我先来介绍一下lua解析一个脚本文件时要用到的一些关键的数据结构,为将来的一系列代码分析打下一个良好的基础.在整个过程中,比较重要的几个源码文件分别是:llex.h,lparse.h.lobject.h和lopcode.h. 在llex.h中 typedef struct Token { int token; SemInfo seminfo; } Token; Token代表了一个词法单元,其中token表示词法类型如TK_NAME.TK_NUMBER等如果不是这些类型则存放则词素…
在lua中用union TString来表示字符串类型 lobject.h: 其中结构体tsv中 reserved字段表示字符串是不是保留关键字,hash是其哈希值,len是其长度.我们在TString中没有看到lua将字符串的内容存在任何地方啊,其实lua是将内容同一存在了另一个地方,global_state中的strt里面: lstate.h: lstate.h: 其中字段hash为二维数组,这里面保存了lua中所有的字符串.接下来让我们来看看lua是怎样生成一个字符串的吧: lstring…
在Lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础.其他语言提供的数据结构,如数组.记录.线性表.队列.集合等,在Lua中都可以通过table来表示.而且使用Lua实现这些数据结构的效率高.   一.数组            在Lua中数组没有固定的大小,可以根据需要增加长度.当初始化数组时,也就间接的定义了它的大小.     二.矩阵与多维数组        在Lua中,有两种方式来表示矩阵,一种是使用一个“数组的数组”,也就是数组中的元素是数组.另一种方式就是合并索…
背景 lua是类是借助表的来实现的, 类被定义后, 在使用场景下, 不希望被修改.如果被修改, 则影响的类的原始定义, 影响所有使用类的地方. 例如: --- router.lua class file router = class() router.xxx = function xxx end --- app.lua router.xxx = function yyy end 故提出新的要求: 1. 对于类在应用场景下,不能修改属性. 2. 对于类在应用场景下, 不能添加新的属性. 类的实现代…