为什么80%的码农都做不了架构师?>>>   

--数据结构是没有语言之分的,只不过不同的语言实现起来的语法不同。

--创建一个简单的数组
local arr1 = {1,2,3,4,5,6}
--遍历数组中得每一个元素
   for i,v in ipairs(arr1) do
   print(v)
   end  
 --另一种创建数组的方式
   local arr2 = {}
   for i=1,10 do
   arr2[i] = i
   print(arr2[i])
   end 
 --创建数组,下标从2开始
   local arr2 = {[2]="hello",[3]="xiao",[4]="ta",[5]="zaojiahua"}
--使用迭代器ipairs遍历的时候输出为空值,因为arr2[1]=nil当ipairs遇到空值的时候就返回了
   for i,v in ipairs(arr2) do
   print(i,v)
   end
--这个时候需要使用pairs遍历
   for i,v in pairs(arr2) do
   print(i,v)
   end
--我们用到了迭代器ipairs()和pairs(),这个使用时候的区别代码已经有体现了,ipairs中得i代表的就是整数下标,从1开始。
 ------------------------------------------------------------------------------------------------------------------

--创建一个10*5的二维数组
local int_arr = {}  
 for i=1,10 do
    int_arr[i] = {}
    for j=1,5 do
    int_arr[i][j] = j
    end
end 
 --遍历二维数组
for i,v in ipairs(int_arr) do
    for j,k in ipairs(v) do
        io.write(k.."\t")
    end
    print("\n")
end
-------------------------------------------------------------------------------------------------------------

--链表的每个节点用一个table表示,table中的字段包括指向下一个节点的指针和该节点的数据元素,这里只是提供一个思路,其他的东西可以用的时候扩展。

--实现一个链表
local list = nil
--链表元素包含俩个字段,next代表的是指针,指向下一个链表元素,value代表的是该链表元素的值
for i=1,10 do
    list = {next = list,value = i}
end  
 --链表的遍历
local l = list
while l do
    print(l.value)
    l = l.next
end
-------------------------------------------------------------------------------------------------------------

--队列

--实现一个队列 包括头指针first和尾指针last first==last的时候代表队列为空

local Que = {first=0,last=0}

--向队列中添加元素,last索引指向最后一个元素的下一个元素,first索引指向的是第一个元素
function Que:push(value)
    local last = self.last
    self[last] = value
    self.last = last+1
end
--移除元素,队列的特点是先进先出
function Que:pop()
    if self.first == self.last then
        print("队列空")
        return nil
    end
    local first = self.first
    self.first = first+1
    return self[first]
end 
 --显示队列中得元素

function Que:showValue()
   for i=self.first,self.last-1 do
       print("value:"..self[i])
    end
end 
 --测试
print("队列测试")
Que:showValue()
Que:push(2)
Que:push(3)
print("push 2,3")
Que:showValue()
Que:push(3)
print("push 3")
Que:showValue()
print("pop:"..Que:pop())
Que:showValue()
print("pop:"..Que:pop())
Que:showValue()
print("push 100")
Que:push(100)
Que:showValue()
print("pop:"..Que:pop())
Que:showValue()
print("pop:"..Que:pop())
Que:showValue()
print("pop:"..Que:pop())

转载于:https://my.oschina.net/u/1773495/blog/394227

LUA Learning Note 4: 数据结构相关推荐

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

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

  2. Python 基础 - Day 5 Learning Note - 模块 之 标准库:xml (9)

    xml 模块介绍 和json一样,适用于不同语言及程序的数据交换的协议.但是json用起来更简单,并有代替xml的趋势. 现在多数金融数据提供方(e.g. bloombegy)还在用xml的方式. 在 ...

  3. 2014/09/30 Learning Note

    Vbird Linux: Vim Learning: http://linux.vbird.org/linux_basic/0310vi.php Bash Shell: http://linux.vb ...

  4. lua学习笔记之数据结构

    使用表来实现数组,记录,列表,队列,集合 1.数组 索引从1开始,并且连续.此时可以使用#表名来表示数组长度.索引不是从1开始的不能使用# local a = {} for i = 1, 1000 d ...

  5. Python 基础 - Day 2 Learning Note - 序列之字符串 String

    字符串(string)特点: 不可修改 独立的字符组成, 通过slice切片操作顺序访问 创建 '' or "" or str() aString = 'alex Chai' # ...

  6. Python 基础 - Day 2 Learning Note - 字符转编码操作

    前情提要:字符编码 python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill).ASCILL有255个字符,包括英语和西欧字符,不包括中文.汉字处理靠GBK, window ...

  7. Spring Learning Note

    1.Introduction of Spring purpose:解决企业级开发的复杂性,整合了现有技术框架 SSH:Struct2+Spring+Hibernate 旧三大框架:SSH Struts ...

  8. [U3D Learning Note] Unity C# Survival Guide (17) --Delegates and Events

    emmmm先附上一个讲得不错的链接:Difference Between Delegates and Events in C# Delegates(代表/委托) Delegate: a variabl ...

  9. 【转贴】Lua 5.0 参考手册

    作者: Roberto Ierusalimschy, Luiz Henrique de Figueiredo, Waldemar Celes Copyright © 2003 Tecgraf, PUC ...

最新文章

  1. MLPclassifier,MLP 多层感知器的的缩写(Multi-layer Perceptron)
  2. python3 aes 解密
  3. 哈夫曼算法证明+哈夫曼编码译码程序实现
  4. 2018大数据学习路线从入门到精通
  5. 一个简单的parser
  6. tar命令打包时过滤特定文件夹
  7. Spring MVC拦截器~~~登陆验证拦截
  8. 未能找到元数据文件_Flink 源码:Checkpoint 元数据详解
  9. 《南溪的目标检测学习笔记》——DCN(DCNv2)的学习笔记
  10. IplImage 封装释放
  11. LAMP兄弟连打造免费视频教程
  12. 用什么软件测试电视盒子真假,网络机顶盒哪个好?专业盒子测评告诉你哪款最值得买...
  13. C语言 “百鸡问题”最优解
  14. 逻辑思维题一:条件组合覆盖
  15. 爬取汽车之家所有汽车参数配置
  16. Laplance算子(二阶导数)
  17. CSMA(carrier sense multiple access)
  18. 如何给一小段视频添加音乐
  19. 买房子了~128.41平方哦`
  20. 名帖163 颜真卿 行书《祭侄文稿》

热门文章

  1. python函数式编程中南大学_中南大学C++实践报告
  2. 【赠书】阿里巴巴官方出品,工业级知识图谱最新书籍领取!
  3. 【阿里云课程】循环神经网络:RNN及其改进
  4. 恶心的openssl。。。
  5. c++多字节与宽字节字符串转换(windows平台)
  6. flask静态html
  7. PyCharm-缩进 格式化代码
  8. 21天学通c++之7.10 for 循环 初始化多个变量
  9. 知乎:什么时候你是产品经理,而不是产品助理?
  10. 圈子 | 大数据分析汽车O2O的机会