Lua中的数据结构
1 数组:(lua习惯数组从1开始)
a={}
for i=, do
a[i]=
end
2 阵和多维数组
:
mt={}//新建一个表,表元素为表
for i=,N do
mt[i]={}//新建一个表,里面的表元素为值
for j=,M do
mt[i][j]=
end
end
:
mt={}//新建一个表,表元素为值(注意起始地址是1*M+1,不再是1开始了)
for i=,N do
for j=,M do
mt[i*M+j]=
end
end
!:注意在表中没有被赋值的部分都是nil无效值,相当于不存在
3 链表:
每个结点代表一个table,每个table两个域:值和指针
创建
list=nil
for line in io.lines() do
list={next=list,value=line}
end
打印
l=list
while l do
print(l.value)
l=l.next
end
4 队列(少量数据时可以使用table库提供的insert和remove来实现队列)
首先认识这个表:
list={first=0,last=-1,1,2,3,4}
print(list[1]) -->1
print(list.first)-->0//注意这里结合和record初始化方式但是访问方式独立
创建一个队列:
list={}
function list.new()
return {start=,end=-}
end
function list.pushleft(list,value)
local start=list.start-
list.start=start
list[start]=value
end
function list.pushright(list,value)
local end=list.end+
list.end=end
list[end]=value
end
function list.popleft(list)
local start=list.start
if start>list.end then error("list is empty") end
local value =list[start]
list[start]=nil
list.first=first+
return value
end
function list.popright(list)
local end=list.end
if end<list.start then error("list is empty") end
local value=list[end]
list[end]=nil
list.end=end-
return value
end
使用:
newqueue=list.new()
for i=, do
list.pushright(newqueue,i)
end
for m=, do
print(newqueue[m])
end
Lua中的数据结构的更多相关文章
- Lua中使用table实现的其它5种数据结构
Lua中使用table实现的其它5种数据结构 lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示. 1.数组 在lua中,table ...
- Lua虚拟机中的数据结构与栈
Lua虚拟机中的数据结构与栈 来源 https://blog.csdn.net/zry112233/article/details/80828327 由上一篇文章可知解释器分析Lua文件之后生成Pro ...
- Lua中的常用函数库汇总
lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调 ...
- [译] Closures in Lua - Lua中的闭包
原文:(PDF) . 摘要 一等(first-class)函数是一种非常强大的语言结构,并且是函数式语言的基础特性.少数过程式语言由于其基于栈的实现,也支持一等函数.本文讨论了Lua 5.x用于实现一 ...
- Lua常用的数据结构表示
1.矩阵 Lua中有两种表示矩阵的方法,一是“数组的数组”.也就是说,table的每个元素是另一个table.例如,可以使用下面代码创建一个n行m列的矩阵:mt = {} -- cr ...
- 【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态
一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是 ...
- Lua中的环境概念
[前言] Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”.这种组织结构的优点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现:另一个优点 ...
- [转][译] Closures in Lua - Lua中的闭包
http://www.cnblogs.com/plodsoft/p/5900270.html?utm_source=tuicool&utm_medium=referral 原文:(PDF) . ...
- Lua中闭包详解 来自RingOfTheC[ring.of.the.c@gmail.com]
这些东西是平时遇到的, 觉得有一定的价值, 所以记录下来, 以后遇到类似的问题可以查阅, 同时分享出来也能方便需要的人, 转载请注明来自RingOfTheC[ring.of.the.c@gmail.c ...
随机推荐
- svn的使用总结
在网上看到了以前介绍非常全的svn的文章,拿来分享 原文网址 http://www.cnblogs.com/jx270/archive/2013/03/04/2943595.html 还有一篇更基础 ...
- 移动端 line-height 不垂直居中问题
本文是从简书复制的, markdown语法可能有些出入, 想看"正版"和更多内容请关注 简书: 小贤笔记 一般情况下, 我们把 line-height 的值设置为 height 的 ...
- 配合sublime使用flexible.js实现微信开发页面自适应
什么是flexible.js 是一个终端设备适配的解决方案.也就是说它可以让你在不同的终端设备中实现页面适配. 是一个用来适配移动端的javascript框架.根据宽度的不同设置不同的字体大小,样式间 ...
- hdu 3613 Best Reward (manachar算法)
Best Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Prob ...
- android 多渠道打包
android 多渠道打包 原理 在manifest文件中,application标签内部设置不同的metadata标签即可,可以通过java api获取这个matedata内的值 友盟提供的多渠道打 ...
- 又续CSS3
这次主要讲呢 1.box-sizing属性 语法:box-sizing: content-box|border-box|inherit; box-sizing属性的用法 box-sizing属性可以为 ...
- less @import and extend及mixin详解
在less中,通过 @import (keyword) "filename"的方式引入其他的文件,这个keyword可以是以下6种: referrence referrence这个 ...
- C# 两个结构相同的类进行赋值
假入两个类A类和B类不有任何继承关系,它们属性名相同,怎么给他们互相赋值呢?下面的方法就可以了. public L SetProperties<T, L>(T t) where L : n ...
- cnpm install 之后 Angular2 Build --prod 报错
95% emittingUnhandled rejection Error: ENOENT: no such file or directory, open 'E:\git_0.28\adminTem ...
- 图解:TCP协议中的三次握手和四次挥手
建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资 ...