• Lua中的数据结构


    1 数组:(lua习惯数组从1开始)

    a={}
    for i=1,1000 do
        a[i]=0
    end


    2 阵和多维数组

    1:
    mt={}//新建一个表,表元素为表
    for i=1,N do
            mt[i]={}//新建一个表,里面的表元素为值
            for j=1,M do
                mt[i][j]=1
            end
    end
    2:
    mt={}//新建一个表,表元素为值(注意起始地址是1*M+1,不再是1开始了)
    for i=1,N do
        for j=1,M do
            mt[i*M+j]=0
        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=0,end=-1}
    end
    function list.pushleft(list,value)
        local start=list.start-1
        list.start=start
        list[start]=value
    end
    function list.pushright(list,value)
        local end=list.end+1
        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+1000
        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-1000
        return value
    end

    使用:

    newqueue=list.new()
    for i=1,10 do
        list.pushright(newqueue,i)
    end
    for m=0,10 do
        print(newqueue[m])
    end
  • 相关阅读:
    sql语句
    CSS笔记
    mysql与oracle区别
    ajax请求aspx
    列表简单排序
    列表删除元素
    正则表达式简介
    创建列表
    动态串 StringBuilder
    StrinBuilder 追加 ,插入,删除,和替换操作
  • 原文地址:https://www.cnblogs.com/zzy-frisrtblog/p/5869300.html
Copyright © 2020-2023  润新知