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()