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()

猜你喜欢

转载自blog.csdn.net/qq_32952043/article/details/79778005
LUA
今日推荐