美文网首页
自己动手写数据结构之双端链表

自己动手写数据结构之双端链表

作者: 逍遥白亦 | 来源:发表于2020-12-19 12:11 被阅读0次

双端链表实现

1 定义

双端链表与传统的链表很相似,但是它有一个新增的特性;即对最后一个链结点的引用

2 基本操作

表头插入 insertFirst

表尾插入 insertLast

表头删除 deleteFirst

3 基本元素

链表头 First

链表尾 Last

节点 Node

节点中数据域 data

节点中指针域 next

4 思路

First与Last

链表为空时first与last均为Null

链表中只有一个结点时,first与last均指向第一个结点

正常情况下,first指向第一个结点,last指向最后一个结点

表头插入 insertFirst

注意区分链表为空和不为空的情况

链表为空时,last = newNode

newNode.next = first

first = newNode

表尾插入 insertLast

注意区分链表为空和不为空的情况

链表为空时,first = newNode

last.next = newNode

last = newNode

表头删除 deleteFirst

代码实现

public class FirstLastLinkedList {

    private Node first;

    private Node last;

    public FirstLastLinkedList() {
        first = null;
        last = null;
    }

    public void insertFirst(int data){
        Node newNode = new Node(data);
        newNode.next = first;
        first = newNode;
        if (isEmpty()){
            last= newNode;
        }
    }

    public void insertLast(int data){
        Node newNode = new Node(data);
        if (isEmpty()){
            first = newNode;
        }else {
            last.next = newNode;
        }
        last = newNode;
    }

    public int deleteFirst(){
        int temp = first.data;
        if (first.next == null){
            last = null;
        }
        first = first.next;
        return temp;
    }

    private boolean isEmpty(){
        return first == null;
    }

    class Node{

        private int data;

        private Node next;

        public Node(int data) {
            this.data = data;
        }

        @Override
        public String toString() {
            return "Node{" +
                    "data=" + data +
                    '}';
        }
    }

}

相关文章

  • 数据结构 | 其二 链表

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

  • 自己动手写数据结构之双端链表

    双端链表实现 1 定义 双端链表与传统的链表很相似,但是它有一个新增的特性;即对最后一个链结点的引用 2 基本操作...

  • 集合-LinkedList解析

    一、概要 Java中底层数据结构是链表、双端链表,Android中数据结构是双向循环链表 非线程安全数据结构,允许...

  • 数据结构和算法总结

    常用数据结构: 数组,栈,队列,链表(单向链表,双端链表,双向链表),哈希表(hash table),树(二叉树,...

  • 文章列表

    基本数据结构 栈 队列 双端队列 无序链表 有序链表 递归 递归 搜索与排序 搜索

  • redis底层数据组织方式

    底层数据结构 redis底层数据结构有:字典、双端链表、压缩链表、整数集合、跳跃表和字典、整数集合、embstr ...

  • 7.双向链表正确实现方式

    链表是基本的数据结构,尤其双向链表在应用中最为常见,LinkedList 就实现了双向链表。今天我们一起手写一个双...

  • 链表

    链表数据结构 Redis的链表实现是双端链表,每个链表节点由一个listNode结构来表示,每个节点都有一个指向前...

  • iOS 数据结构之链表

    iOS 数据结构之链表 iOS 数据结构之链表

  • 哈希表

    概述 数据结构连续型 => 数组(栈)离散型 => 链表(队列 => 双端链表) | 二叉树 拥有键值对元素的无序...

网友评论

      本文标题:自己动手写数据结构之双端链表

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