Lua学习笔记Day4-Lua实现链表

Lua学习笔记Day4-Lua实现链表

  • Lua学习笔记Day4-Lua实现链表
    • 目录
    • Lua实现链表

目录

  • Lua实现链表

Lua实现链表

  • Lua实现链表

    用Lua描述一个链表的操作,包括:
    1) 创建 清空
    2) 往末端插入元素
    3) 往头部插入元素
    4) 删除指定元素(内容相同的)
    5) 遍历

SList = {}
function SList:Create()
    local list = {len = 0,next = nil}
    --创建
    function list:AddHead(value)
        local node = {}
        node.data = value
        node.next = list.next --list可以换做self
        list.next = node
        list.len = list.len + 1
    end
    --头部添加
    function list:AddHead(value)
        local node = {}
        node.data = value
        node.next = list.next
        list.next = node
        list.len = list.len + 1
    end
    --尾部添加
    function list:AddLast(value)
        local tmp = list
        while list.next ~= nil do
            list = list.next
        end
        list.next = {}
        list.next.data = value
        list.next.next = nil
        list = tmp
        list.len = list.len + 1
    end
    --清空
    function list:Clear( )
        local node
        while list.len > 0 do
            node = list.next
            while node~=nil do
                node = node.next
            end
        node = nil
        list.len = list.len - 1
        end
    end
    --删除指定元素
    function list:Dele(index)
        local i = index
        local d,t
        local node = list
        while i > 1 do --找到要删除元素的前一个
            node = node.next
            i = i - 1
        end
        d = node.next.data
        t = node.next.next
        node.next = nil
        node.next = t
        list.len = list.len - 1
        return d
    end
    --遍历
    function list:Display()
        local node = list.next
        local i = list.len
        while i>0 do
            print(node.data)
            node = node.next
            i = i- 1
        end
    end
    return list
end

调用方法:
local ls = SList:Create()
local ls1 = SList:Create()
ls:AddHead(1)
ls:AddHead(2)
ls:AddHead(3)
ls:AddHead(4)
ls:Dele(1)
ls:Display()
ls:Clear()

ls1:AddLast(5)
ls1:AddLast(6)
ls1:AddLast(7)
ls1:Display()
ls1:Clear()

你可能感兴趣的:(链表,遍历,lua)