lua链表的实现

题目: 用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值