lua 静态链表

List = List or {}
function List:InitList(length)
    self.length = length
    self.m_length = 0
    self.table = {}
    for  i = 0 , length - 2 , 1 do
        local list = {cur , data}
        self.table[i] = list
        self.table[i].cur = i + 1
    end
    local small_list = {cur , data}
    self.table[length - 1] = small_list
    self.table[length - 1].cur = 0
    return true
end
function List:GetSpaceNode()
    local space_node = self.table[0].cur
 
    if space_node then
        self.table[0].cur = self.table[space_node].cur
        return space_node
    end
    return -1
end
function List:ListInsert(index , number)
    local last_num = self.length - 1
    if index < 1 or index > self.length then
        return false
    end
    local space_node = self:GetSpaceNode()
    self.table[space_node].data = number
    for  i = 1 , index - 1 do
        last_num = self.table[last_num].cur
    end
    self.table[space_node].cur = self.table[last_num].cur
    self.table[last_num].cur = space_node
    self.m_length = self.m_length + 1
    return true
end
function List:ListDelete(index)
   if index < 1 or index > self.length  then
       return false
    end
    local lase_num = self.length - 1
    for i = 1 , index - 1  do
        lase_num = self.table[lase_num].cur
    end
    local num = self.table[lase_num].cur
    self.table[lase_num].cur = self.table[num].cur
    self:FreeNode(index)
     self.m_length = self.m_length - 1
    return true
end
function List:FreeNode(index)
  self.table[0].cur = self.table[index].cur
  self.table[0].cur = index
  self.table[index] = {}
end
function List:Show()
    for k,v in pairs(self.table) do
        if nil ~= v.data then
            print("打印静态链表中的结点" , v.data)
        end
    end
end
function List:main()
    List:InitList(10)
    List:ListInsert(1 ,1)
    List:ListInsert(2 ,2)
    List:ListInsert(3 ,3)
    List:ListInsert(4, 4)
    List:ListInsert(5 ,5)
    List:ListInsert(6 ,6)
    List:ListInsert(7 ,7)
    print(List:GetSpaceNode(), "--------------查看空余结点------------")
    List:Show()
end
List:main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值