class LinkedList
constructor: ->
# 首节点
@_head = null
# 添加节点
add: (data) ->
# 创建新节点
node = data: data, next:null
# 如果首节点为空, 则进行赋值; 否则设置遍历的起点为首节点
current = @_head or = node
# 判断是否只有一个节点
if @_head isnt node
# 遍历至最后一个节点
current = current.next while current.next
# 添加新节点至队列尾部
current.next = node
# 返回队列
this
# 查找节点
item: (index) ->
# 负数处理
return null if index < 0
# 第一个节点
current = @_head or null
i = -1
# 遍历, 直至节点不会空且序号为index
current = current.next while current and index > ++i
# 返回节点的data值
current and current.data
# 删除节点
remove: (index) ->
# 负数处理
return null if index < 0
current = @_head or null
i = -1
# 当序号为0时
if index is 0
# 则将首节点的下一个节点提升为子节点
@_head = current.next
else
# 序号>0时, 遍历获取目标节点以及其上一个节点
[previous, current] = [current, current.next] while index > ++i
# 将目标节点的上下级节点关联, 从而达到删除目标节点的效果
previous.next = current.next
# 返回被删除的目标节点的data值
current and current.data
# 计算队列大小
size: ->
current = @_head
count = 0
while current
count += 1
current = current.next
count
# 转化为Array
toArray: ->
result = []
current = @_head
while current
result.push current.data
current = current.next
result
# 转化为字符串
toString: ->
@toArray().toString()