lua写的一个顺序表

local list = {}
function list:InitList(length)
    local small_list = {}
    small_list.size = length
    small_list.length = length
    self.small_list = {}
     self.small_list.number = {}
    for i = 1 , length do
        self.small_list.number[i] = 0
    end
  
end


function list:DestoryList()
  self.small_list.number = {}
  self.small_list.number = nil
end


function list:ClearList()
    for i = 1 , #self.small_list.number do
        self.small_list.number[i] = 0
    end
    self.small_list.number = {}
end


function list:ListEmpty()
   if not next(self.small_list.number) then
      return true
   end
   return false
end


function list:ListLength()
   local num = 0
   for i = 1, #self.small_list.number do 
      num = num + 1 
  end
  return num
end


function list:GetElem(i)
    return self.small_list.number[i]
end


function list:LocateElem(num , two_number)
    for k ,v in pairs  (self.small_list.number) do
        if num == v then
            two_number = k 
            return two_number
        end
    end
    return -1
end


function list:PriorElem(num , two_number)
    if num < 1 or num >self.small_list.length then
        return false
    elseif self.small_list.length == 0 then 
        return false
    end
    two_number = self.small_list.number[num - 1]
   return true and  two_number 
end


function list:NextElem(num , two_number)
    if num < 0 or num >= self.small_list.length then
        return false
    elseif  0 == self.small_list.length then
        return false
    end
    two_number = self.small_list.number[num + 1]
    return true and two_number 
end
    
function list:ListInsert(num , two_number)
     self.small_list.length = self.small_list.length + 1
    if self.small_list.size == self.small_list.length then
        return false
    elseif num < 1 or num > self.small_list.length then
        return false
    end
    for i = self.small_list.length - 1 , num, - 1 do 
        self.small_list.number[i + 1] = self.small_list.number[i]
    end
     self.small_list.number[num] = two_number
    return true 
end


function list:ListDelete(num , two_number)
    if 0 == self.small_list.length then
        return false
    elseif  num < 1  or num > self.small_list.length then
        return false
    end
    two_number = self.small_list.number[num]
    for i = num + 1 , self.small_list.length do 
        self.small_list.number[i - 1] = self.small_list.number[i]
    end
    self.small_list.length = self.small_list.length - 1
    return true and two_number
end


function list:ListTraverse()
    for k , v in pairs (self.small_list.number) do
        print(v , "打印线性表中的元素" ) 
    end
  
end


function list:main()
    
    list:InitList(10)
    list:ListInsert(1,2)
    list:ListInsert(2,5)
    list:ListInsert(3,6)
    list:ListInsert(4,7)
    list:ListInsert(5,8)
    list:ListTraverse()
    local a 
 
    list:ListTraverse()
end 
list:main()

猜你喜欢

转载自blog.csdn.net/qq_32952043/article/details/79678559