数据结构 - 链表

var LinkedList = function() {
    this.Node = function(element) {
        this.element = element;
        this.next = null;
    };
    this.head = new this.Node('head');
};

LinkedList.prototype.find = function(item) {
    var currNode = this.head;
    while (currNode.element !== item) {
        currNode = currNode.next;
    }
    return currNode;
};

LinkedList.prototype.insert = function(element, previous) {
    var newNode = new this.Node(element),
        prev = this.find(previous);

    newNode.next = prev.next;
    prev.next = newNode;
};


LinkedList.prototype.seeAll = function() {
    var currNode = this.head,
        contents = [];
        
    while (currNode.next !== null) {
        contents.push(currNode.next.element);
        currNode = currNode.next;
    }
    return contents;
};


LinkedList.prototype.findPrevious = function(item) {
    var currNode = this.head;
    while (currNode.next !== null && currNode.next.element !== item) {
        currNode = currNode.next;
    }
    return currNode;
};



LinkedList.prototype.remove = function(item) {
    var prevNode = this.findPrevious(item);
    if (prevNode.next !== null) {
        prevNode.next = prevNode.next.next;
    }
};

module.exports = LinkedList;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文所讲的链表是单链表,链表采用无头链表 科普下:一般链表可以分为有头节点的链表与无头节点的链表 有头节点的链表:...
    翼动晴空阅读 3,602评论 0 0
  • 一、定义1.需要明确几个概念:线性表(顺序表, list, linear list), 数组(array),链表(...
    wuxuan94阅读 3,532评论 0 0
  • 本文将使用Swift实现一个标准链表,在实现的过程中,遵守函数式编程的规则,无副作用,可以看到和C语言的实现还是有...
    肆_春分阅读 4,280评论 0 3
  • 说链表之前,我们先大概说一下线性表:线性表是一种最基本,最简单也是最常用的一种数据结构。线性表数据元素之间是一对一...
    MaxHere阅读 2,999评论 0 1
  • 本文通过上文实现的链表,实现一个简单的通信录 通讯录功能: 添加联系人 查找联系人 删除联系人 显示所有联系人 (...
    翼动晴空阅读 8,462评论 0 1