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