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中的数据结构的更多相关文章

  1. Lua中使用table实现的其它5种数据结构

    Lua中使用table实现的其它5种数据结构 lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示. 1.数组 在lua中,table ...

  2. Lua虚拟机中的数据结构与栈

    Lua虚拟机中的数据结构与栈 来源 https://blog.csdn.net/zry112233/article/details/80828327 由上一篇文章可知解释器分析Lua文件之后生成Pro ...

  3. Lua中的常用函数库汇总

    lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调 ...

  4. [译] Closures in Lua - Lua中的闭包

    原文:(PDF) . 摘要 一等(first-class)函数是一种非常强大的语言结构,并且是函数式语言的基础特性.少数过程式语言由于其基于栈的实现,也支持一等函数.本文讨论了Lua 5.x用于实现一 ...

  5. Lua常用的数据结构表示

    1.矩阵 Lua中有两种表示矩阵的方法,一是“数组的数组”.也就是说,table的每个元素是另一个table.例如,可以使用下面代码创建一个n行m列的矩阵:mt = {}          -- cr ...

  6. 【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态

    一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是 ...

  7. Lua中的环境概念

    [前言] Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”.这种组织结构的优点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现:另一个优点 ...

  8. [转][译] Closures in Lua - Lua中的闭包

    http://www.cnblogs.com/plodsoft/p/5900270.html?utm_source=tuicool&utm_medium=referral 原文:(PDF) . ...

  9. Lua中闭包详解 来自RingOfTheC[ring.of.the.c@gmail.com]

    这些东西是平时遇到的, 觉得有一定的价值, 所以记录下来, 以后遇到类似的问题可以查阅, 同时分享出来也能方便需要的人, 转载请注明来自RingOfTheC[ring.of.the.c@gmail.c ...

随机推荐

  1. poj 1155 树形背包

    http://blog.csdn.net/libin56842/article/details/9908199 树形背包: 首先是建树,每个结构体为一个节点,包括下一个点序号,值,和next. tre ...

  2. POJ1651 Multiplication Puzzle(相邻乘积之和最小,区间DP)

    http://blog.csdn.net/libin56842/article/details/9747021 http://www.cnblogs.com/devil-91/archive/2012 ...

  3. HTML5 localstorage和session操作

    setStorage={ getLocal : function(key){ //获得localStorage里面的值 var storage = window.localStorage; if(st ...

  4. react+antd 选项卡切换

    index.js: import React from 'react'; import ReactDOM from 'react-dom'; import CardSecond from './Car ...

  5. easyui numberbox输入框 编辑不可编辑的切换

    背景:申请单里需要选费用类型,费用类型有的有子明细项,有个合计项    当有子明细项的时候,合计项的值是通过弹出的子明细项价格的总和(设置为可编辑没问题,因为点击出来弹框,编辑不了)    没有子明细 ...

  6. arcgis10.sp5下载地址

    http://support.esrichina.com.cn/2012/0716/1649.html

  7. C++基础--回调的应用

    一.类成员函数的回调 1. 类成员函数的回调,函数的调用必须通过类来调用: CallBack.h #pragma once class CallBack { public: CallBack(); ~ ...

  8. 如何优雅地使用Markdown (Sublime 3 + MarkdownEditing+OmniMarkupPreviewer)

    最近开始上手Sublime 3 作为Markdown 的重度使用者自然关于Markdown的插件是必不可少的 . 在这里记录分享一下我常用的两款Markdown插件. MarkdownEditing ...

  9. 浅析 if __name__ == __main__ :

    有句话经典的概括了这段代码的意义: “Make a script both importable and executable” 意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可 ...

  10. C++中long是什么类型

    long long本质上还是整型,只不过是一种超长的整型. int型:32位整型,取值范围为-2^31 ~ (2^31 - 1) .long:在32位系统是32位整型,取值范围为-2^31 ~ (2^ ...