lua链表的实现

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

题目: 用lua 完成链表的基本操作

            1. 建表

            2. 尾部插入

            3. 头部插入

            4. 删除结点(与输入值相同的结点)

            5. 遍历

要求实现:    ls1:Creat()

                          ls1:pushback()

                          ls1:pushhead()                        

                          ls2:Creat()

                          ls2:pushback()

其中,ls1和ls2互不影响

代码:

CList = { data = 0, next = nil}

function CList : Creat()
   
   local l_newnode= {}
    setmetatable(l_newnode, self)
    self.__index = self

    return l_newnode
end

function CList : pushback(data)
    
    local newnode = {}
    setmetatable(newnode, CList)
    newnode.data = data
    newnode.next = nil
    local l_inputkey = self

    while l_inputkey.next do
        l_inputkey = l_inputkey.next
    end
    l_inputkey.next = newnode

    return self

end

function CList : pushhead(data)
   
    local newnode = {}
    setmetatable(newnode, CList)
    newnode.data = data
    newnode.next = self.next
    self.next = newnode

    return self
end

function CList : erasenode(data)
    
    local eranode = self.next
    local era_head = self
    while eranode do
        if eranode.data == data then
            eranode = eranode.next
            era_head.next = nil
            era_head.next = l 
        end
        era_head = eranode
        eranode = eranode.next
    end

end

function CList : display()

    printnode = self.next
    while printnode do
       print(printnode.data)
       printnode = printnode.next
    end
    print("= = display OK = =")

end


local ls1 = CList : Creat()
ls1:pushback(15)
ls1:pushhead(10)
ls1:display()
local ls2 = CList : Creat()
ls2:pushback(20)
ls2:pushhead(17)
ls2:display()
ls1:pushback(25)
ls1:display()
ls2:pushback(38)
ls2:display()


转载于:https://my.oschina.net/suprock/blog/403595

你可能感兴趣的:(lua链表的实现)