美文网首页
链表(Linked List)

链表(Linked List)

作者: qil231 | 来源:发表于2017-08-02 17:34 被阅读0次

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列节点组成,这些节点不必在内存中相连。每个节点由数据部分Data和链部分Next,Next指向下一个节点,这样当添加或者删除时,只需要改变相关节点的Next的指向,效率很高。

//链表的节点
class Node<E> {

  E item;
  Node<E> next;

  Node(E element) {
    this.item = element;
    this.next = null;
  }
}
//定义好节点后,使用前一般是对头节点和尾节点进行初始化
//头节点和尾节点都为空 链表为空
Node<E> head = null;
Node<E> tail = null;
//空链表创建一个新节点
//创建一个新的节点 并让head指向此节点
head = new Node("nodedata1");
//让尾节点也指向此节点
tail = head;
//链表追加一个节点
tail.next = new Node("nodedata2");
tail = tail.next;
//顺序遍历链表
Node<String> current = head;
while (current != null) {
  System.out.println(current.item);
  current = current.next;
}
//倒序遍历链表主要用了递归的思想
static void printListRev(Node<String> head) {
  if (head != null) {
    printListRev(head.next);
    System.out.println(head.item);
  }
}
//单链表反转 主要是逐一改变两个节点间的链接关系来完成
static Node<String> revList(Node<String> head) {

  if (head == null) {
    return null;
  }

  Node<String> nodeResult = null;
  Node<String> nodePre = null;
  Node<String> current = head;

  while(current != null) {
    Node<String> nodeNext = current.next;
    if (nodeNext == null) {
      nodeResult = current;
    }

    current.next = nodePre;
    nodePre = current;
    current = nodeNext;
  }
  return nodeResult;
}

链表的实现还有其它的方式,常见的有循环单链表,双向链表,循环双向链表。 循环单链表 主要是链表的最后一个节点指向第一个节点,整体构成一个链环。 双向链表 主要是节点中包含两个指针部分,一个指向前驱元,一个指向后继元,JDK中LinkedList集合类的实现就是双向链表。 循环双向链表 是最后一个节点指向第一个节点。

相关文章

  • LeetCode题集-链表

    链表逆序 206. Reverse Linked List 92. Reverse Linked List II ...

  • 怎样应对IT面试与笔试-(十五)

    Linked List 链表 141. Linked List Cycle 判断单链表中是否有环 使用到的数据结...

  • Linked List Cycle II

    Linked List Cycle II 今天是一道有关链表的题目,是Linked List Cycle(回复02...

  • 链表(Linked List)

    链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列...

  • 链表(linked list )

    定义: 链表是一种物理存储单元上非连续、非顺序的存储结构。 特点: n个节点离散分配 彼此通过指针相连 每个节点只...

  • linked list 链表

    链表 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由...

  • 链表(Linked List)

    什么是链表? 通过指针或者引用将一系列数据节点串起来的数据结构称为链表,链表数据结构与数组最明显的区别就是它在内存...

  • 链表(Linked List)

    在分析链表之前,我们先来对之前的动态数组、栈、队列总结一下:(1)底层依托于静态数组(2)依靠resize解决固定...

  • 链表 Linked List

    链表和动态数组的比较 动态数组回造成内存空间的大量浪费 链表可以做到用多少内存就申请多少内存 链表 是一种链式存储...

  • Leetcode【61、82、83、142、143、1171】

    问题描述:【Linked List】61. Rotate List 解题思路: 这道题是给一个链表,旋转链表,将链...

网友评论

      本文标题:链表(Linked List)

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