您的位置:首页 > 编程语言 > Lua

Lua学习笔记Day4-Lua实现链表

2016-05-16 22:58 423 查看

Lua学习笔记Day4-Lua实现链表

Lua学习笔记Day4-Lua实现链表
目录

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lua 链表 遍历