Lua学习笔记Day4-Lua实现链表
目录
- Lua实现链表
Lua实现链表
Lua实现链表
用Lua描述一个链表的操作,包括:
1) 创建 清空
2) 往末端插入元素
3) 往头部插入元素
4) 删除指定元素(内容相同的)
5) 遍历
SList = {}
function SList:Create()
local list = {len = 0,next = nil}
--创建
function list:AddHead(value)
local node = {}
node.data = value
node.next = list.next --list可以换做self
list.next = node
list.len = list.len + 1
end
--头部添加
function list:AddHead(value)
local node = {}
node.data = value
node.next = list.next
list.next = node
list.len = list.len + 1
end
--尾部添加
function list:AddLast(value)
local tmp = list
while list.next ~= nil do
list = list.next
end
list.next = {}
list.next.data = value
list.next.next = nil
list = tmp
list.len = list.len + 1
end
--清空
function list:Clear( )
local node
while list.len > 0 do
node = list.next
while node~=nil do
node = node.next
end
node = nil
list.len = list.len - 1
end
end
--删除指定元素
function list:Dele(index)
local i = index
local d,t
local node = list
while i > 1 do --找到要删除元素的前一个
node = node.next
i = i - 1
end
d = node.next.data
t = node.next.next
node.next = nil
node.next = t
list.len = list.len - 1
return d
end
--遍历
function list:Display()
local node = list.next
local i = list.len
while i>0 do
print(node.data)
node = node.next
i = i- 1
end
end
return list
end
调用方法:
local ls = SList:Create()
local ls1 = SList:Create()
ls:AddHead(1)
ls:AddHead(2)
ls:AddHead(3)
ls:AddHead(4)
ls:Dele(1)
ls:Display()
ls:Clear()
ls1:AddLast(5)
ls1:AddLast(6)
ls1:AddLast(7)
ls1:Display()
ls1:Clear()