数据结构-线性表-其他链表

其他链表

双向链表

扩展单链表的节点结构,使得通过一个节点的引用,不但能够访问其后续节点,也可以访问其前驱节点
双向链表节点结构(前驱指针域、数据域、后续指针域)
Java中的LinkedList底层使用的就是双向链表

循环链表

在一个循环链表中,首节点和末节点被连接在一起。单向链表和双向链表都可以实现
image
image

LinkedList添加元素实现

创建节点类

public class LinkedNode {

    LinkedNode prev;
    Object data;
    LinkedNode next;

    public LinkedNode() {
    }

    public LinkedNode(LinkedNode prev, Object data, LinkedNode next) {
        this.prev = prev;
        this.data = data;
        this.next = next;
    }
}

实现LinkedList添加元素方法

public class MyLinkedList implements List{
    //元素个数
    private int size;
    //记录链表的头节点引用
    LinkedNode first;
    //记录链表的尾节点引用
    LinkedNode last;

    //添加元素
    public void add(Object e) {
        //尾节点引用会改变
        LinkedNode l = last;
        //创建新节点,它的前驱节点是原先的尾节点,后续节点为null
        LinkedNode newNode = new LinkedNode(l,e,null);
        //记录尾节点引用指向新创建的节点
        last = newNode;
        //这里是判断一下,如果链表中没有元素,就让头节点引用也指向新创建的节点
        if (first == null) {
            first = newNode;
        }else{
            //改变原先尾节点的后续节点为新尾节点
            l.next = newNode;
        }
        size++;
    }
}
阅读 95

推荐阅读