`

coffee实现LinkedList

 
阅读更多
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()

 

分享到:
评论

相关推荐

    Gourmet Coffee System 实现代码

    在本项目“Gourmet Coffee System”中,我们将深入探讨如何使用Java编程语言实现一个精致的咖啡制作系统。这个系统的设计和实现将涵盖多种Java编程概念,特别是迭代器的使用,这对于初学者理解Java集合框架的核心...

    面向对象程序设计实验指导书完整版.doc

    在这个实验中,学生将学习如何使用Java语言来实现集合框架,例如ArrayList和LinkedList,并且了解如何使用这些集合框架来解决实际问题。 Experiment 2 Using Design Patterns in the Gourmet Coffee System 在这个...

    King-Kong-Coffee

    【标题】"King-Kong-Coffee"所指的可能是一个以咖啡为主题的个人项目,很可能是一个用Java编程语言实现的咖啡店管理系统或者在线订餐平台。这个项目的命名可能来源于电影《金刚》(King Kong),寓意该项目如电影...

    东北大学JAVA 面向对象实验全部实验代码1到6

    8. 集合框架:Java集合框架是处理对象数组的重要工具,包括List、Set、Queue等接口和ArrayList、LinkedList、HashSet、HashMap等实现类。实验中可能涉及数据的存储和操作,如使用ArrayList存储学生信息。 9. 文件与...

    Java咖啡馆

    5. **集合框架**:Java集合框架包括List、Set、Queue、Map等接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等,它们在存储和操作数据方面发挥着重要作用。 6. **输入输出流**:I/O流是Java处理数据...

    极品咖啡Java作业

    比如,可以设计一个`Coffee`类来表示各种咖啡,一个`Order`类来处理订单,一个`Inventory`类来管理库存。 2. **异常处理**:在处理用户输入或系统操作时,可能出现异常情况,如订单金额不足、库存不足等。Java的...

    nice_cafe_code

    例如,可以创建一个`Cafe`类,包含`Coffee`、`Tea`等子类,以及`Customer`和`Barista`角色,体现类的层次关系。 2. **异常处理** 在Java中,异常处理是保证程序健壮性的重要手段。使用`try-catch-finally`语句块,...

    JavaCoffe

    例如,可以有`Coffee`类来描述咖啡的类型、价格等,`Customer`类来表示顾客信息,以及`Order`类来处理订单。 3. **集合框架**:在处理如库存、订单等数据时,Java的集合框架如ArrayList、LinkedList、HashMap等将...

Global site tag (gtag.js) - Google Analytics