`

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

 

分享到:
评论

相关推荐

    模拟实现 LinkedList 测试类

    模拟实现 LinkedList 测试类

    链表类LinkedList的完全c++实现

    链表类LinkedList的完全c++实现,根据数据结构与算法课堂总结。

    JavaScript 实现基础 LinkedList 功能

    在JavaScript中实现LinkedList,我们需要理解其基本概念、操作以及如何用原生JavaScript对象来模拟链表结构。 首先,LinkedList由一系列节点(Node)组成,每个节点包含两部分:数据和指向下一个节点的引用。在...

    LinkedList的实现.zip

    在这个“LinkedList的实现.zip”文件中,我们有三个头文件——Link.h、List.h和LinkedList,它们共同构成了LinkedList的数据结构及其操作的实现。 首先,`Link.h`通常会定义单链表中的节点结构。节点结构可能包括一...

    C语言实现LinkedList

    C语言实现LinkedList

    Java实现LinkedList

    实现一个链表LinkedList,要求使用链表机构实现,并提供相应的add(Object o),remove(Object o)这两个方法.

    源码解析jdk7.0集合:LinkedList的底层实现原理.pdf

    在深入分析JDK 7.0中LinkedList集合的底层实现原理前,我们首先需要了解LinkedList的基本概念。LinkedList,即双向链表,是一种通过双向指针相互连接的数据结构,每个节点包含数据域以及指向前驱和后继节点的指针。...

    自定义实现的LinkedList

    自定义实现的ArrayList数据结构,有大量注释以及编写思路,帮助新手用Java语言来实现数据结构

    使用LinkedList模拟堆栈

    本文将详细讲解如何使用Java中的LinkedList类来模拟这两种数据结构,并实现其基本操作。 堆栈(Stack)是一种后进先出(LIFO, Last In First Out)的数据结构,它遵循“先进后出”的原则。常见的堆栈操作有压栈...

    C#练习 阶段练习:实现链表(LinkedList)

    阶段练习:实现链表(LinkedList) 简介:写一个链表的数据结构,要求实现IList接口。 具体要求: 1、 使用代码规范。 2、 至少对IList中的Add,Remove,Insert,Indexer,IEnumerator进行单元测试。 3、 对上述每个...

    用LinkedList实现队列和栈

    在Java编程语言中,`LinkedList` 是一个常用的集合类,它实现了`List`接口,并且提供了额外的功能,如双端操作。本篇文章将探讨如何利用`LinkedList`来实现队列和栈这两种数据结构,以及其背后的原理和源码分析。 #...

    LinkedList实现栈

    本话题将深入探讨如何使用LinkedList来实现一个栈,并考虑在多线程环境下的同步问题。 首先,LinkedList类位于Java的`java.util`包中,它实现了List接口,允许我们存储和操作一系列元素。LinkedList内部维护了一个...

    java中LinkedList集合类实现栈和队列.doc

    在Java编程语言中,LinkedList集合类是一个非常重要的数据结构,它可以用来实现栈和队列这两种特殊的数据结构。LinkedList是一个双链表,每个节点包含数据元素和两个引用,分别指向前后节点,这使得在列表中进行插入...

    ArrayList LinkedList Vector区别

    ArrayList、LinkedList、Vector 是 Java 中常用的数据结构实现类,它们都实现了 List 接口,但它们在存储方式、性能、线程安全性等方面有着不同特点。 首先,ArrayList 和 Vector 都是采用数组方式存储数据的,这种...

    JAVA利用LinkedList构造栈与队列

    在Java编程语言中,LinkedList是一个常用的集合类,它实现了List接口,同时也提供了双向链表的实现。LinkedList不仅可以作为列表使用,还可以被巧妙地利用来构建栈(Stack)和队列(Queue)这两种基本数据结构。在本...

    LinkedList的应用

    List&lt;String&gt; l1=new LinkedList();//使用泛型 //List l1= new LinkedList(); int index=0; //插入元素 l1.add("firstElement"); l1.add("secondElement"); l1.add("thirdElement"); //访问索引 ...

    Gourmet Coffee System 实现代码

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

    List-LinkedList 单链表就地反转

    ### List-LinkedList 单链表就地反转 #### 概述 本文主要介绍单链表的就地反转算法实现,并通过具体的C语言代码示例来解释这一过程。单链表是一种常见的线性数据结构,其中每个元素包含一个指向下一个元素的指针。...

    LinkedList实现List一些方法

    在本文中,我们将深入探讨LinkedList如何实现List接口的一些主要方法,并了解其内部工作原理。 1. **添加元素**: LinkedList提供了`add(int index, E element)`和`add(E e)`方法来添加元素。`add(int index, E ...

Global site tag (gtag.js) - Google Analytics