美文网首页
数据结构-单向链表

数据结构-单向链表

作者: 天空_dst | 来源:发表于2022-10-26 00:42 被阅读0次

单向链表的结构

单向链表.png

Node节点

static class Node<E> {
    E element;
    Node<E> next;
    public Node(E element, Node<E> next) {
        this.element = element;
        this.next = next;
    }
}

根据index获取节点

private Node<E> node(int index) {
    rangeCheckFor(index);
    Node<E> node = first;
    for (int i = 0; i < index; i++) {
        node = node.next;
    }
    return node;
}

添加

public void add(int index, E element) {
    rangeCheckForAdd(index);
    if (index == 0) {
       first = new Node<>(element, first);
    } else {
        Node<E> node = node(index - 1);
        node.next = new Node<>(element, node.next);
    }
    size++;
}

删除

public E remove(int index) {
    rangeCheckFor(index);
    Node<E> node = first;
    if (index == 0) {
        first = first.next;
    } else {
        Node<E> pre = node(index - 1);
        node = pre.next;
        pre.next = node.next;
    }
    size--;
    return node.element;
}

获取index位置的元素

public int indexOf(E element) {
    Node<E> node = first;
    if (element == null) {
        for (int i = 0; i < size; i++) {
            if (node.element == null) { return i; }
            node = node.next;
        }
    } else {
       for (int i = 0; i < size; i++) {
           if (element.equals(node.element)) { return i; }
           node = node.next;
       }
    }
    return ELEMENT_NOT_FOUND;
}

清空

 public void clear() {
    first = null;
    size = 0;
}

虚拟头节点的单向链表

  • 观察代码我们发现很多时候我们都需要针对头节点做单独处理
  • 为了减少代码的复杂度 我们可以加一个虚拟头节点
  • 添加 删除逻辑会简化不少
public SingleLinkedList() {
    first = new Node<>(null, null);
}

相关文章

  • 算法与数据结构知识汇总(二、链表)

    1、概念 2、链表的数据结构 单向链表的数据结构如下图: 上图数据结构为单向链表,简称单链表,该数据结构由若干个节...

  • 2019-12-04 Java-LinkedList源码解读

    @TOC 1、链表数据结构 链表分为单向链表和双向链表,他们的区别在于,单向链表只能单向寻址,而双向链表可以双向寻...

  • 用Java写单向链表

    数据结构—单向链表 为了巩固自己的基础知识,这次就用 Java 来写一个单向链表。问:什么是单向链表?首先链表是数...

  • 数据结构 | 其二 链表

    冰河winner - 数据结构之链表 2.1 单向链表 数据结构(一) 单链表的实现-JAVA 2.2 双端链表 ...

  • 线性表-单向循环链表

    单向循环链表 单向循环链表示意图如下: 数据结构定义(同普通链表) 单向循环链表初始化与赋值 在上面循环遍历查找尾...

  • 数据结构笔记

    数据结构课程概览 ================== 1.顺序表 2.链表:单链表,单向循环链表,双链表...

  • 链表反转

    概述 链表反转是非常经典的面试题,要实现此功能,需先实现链表的数据结构。 链表类 获得单向链表方法 输出单向链表方...

  • 总结

    Android篇 数据结构与算法顺序表 - ArrayList源码链表 - 单向链表、双向链表 - LinkedL...

  • 2018-03-26

    数据结构:单向链表 #include#include//实现一个简单的单向链表 (不带头节点的链表,只有一个头指针...

  • 链表

    一种线性数据结构。包含单向链表和双向链表。 单向链表的结构,操作(插入、删除和遍历)及其时间复杂度: 通常使...

网友评论

      本文标题:数据结构-单向链表

      本文链接:https://www.haomeiwen.com/subject/yhbozrtx.html