美文网首页
如何实现java链表中的基本操作(增、删、查、改)

如何实现java链表中的基本操作(增、删、查、改)

作者: 小人物不说大话 | 来源:发表于2020-02-24 17:53 被阅读0次

如何实现java链表中的基本操作(增、删、查、改)

链表也是一个线性的数据结构,与数组不同的是,链表在内存中的存储方式是随机存储。

下面给出涵盖链表四个操作的一个完整的例子,有几点需要注意的是:

(一)在增删改查之前,都需要对给出的下标进行边界判断;

(二)增加一个名为last的节点,可以方便在链表的尾部进行操作,省去了查找到最后一个节点的时间复杂度;

(三)在链表的内部插入元素时,我们先找到要插入位置的前一个节点prevNode,然后可以记录下prevNode的next,插入时先将prevNode的next指向要插入的节点,再将要插入的节点的next指向当前的next。这一点和C++中的操作也略有不同;

(四)删除节点时,用removedNode来记录删除节点的返回值,并且不要忘了size要减1。

相关免费视频教程推荐:java视频

操作示例如下:

publicclassMyLinkedList {

    //定义一个静态的内部类

    privatestaticclassNode{

        int data;

        Node next;

        Node(int data){

            this.data = data;

        }

    }

    privateNode head;

    privateNode last;//为了方便尾部插入元素的操作

    privateint size;//size表示链表的实际长度

    publicvoid insert(int data, int index)throws Exception{

        if(index < 0 || index > size)

            thrownewIndexOutOfBoundsException("超出链表节点范围!");

        Node insertedNode = newNode(data);

        if(size == 0){//插入第一个元素时元素个数为0

            head = insertedNode;

            last = insertedNode;

        }elseif(size == index){//在链表的末尾插入

            last.next = insertedNode;

            last = insertedNode;

        }else{

            Node prevNode = get(index - 1);

            Node nextNode = prevNode.next;

            prevNode.next = insertedNode;

            insertedNode.next = nextNode;

        }

        size++;

    }

    publicvoid update(int data, int index) throws Exception{

        if(index < 0 || index >= size)

            thrownewIndexOutOfBoundsException("超出链表节点范围!");

        if(index == 0)

            head.data = data;

        elseif(index == size - 1)

            last.data = data;

        else{

            Node temp = get(index);

            temp.data = data;

        }

    }

    publicNode remove(int index) throws Exception {

        if(index < 0 || index >= size){

            thrownewIndexOutOfBoundsException("超出链表节点范围!");

        }

        Node removedNode = null;//不给removedNode分配堆内存

        if(index == 0){

            removedNode = head;

            head = head.next;

        }

        elseif(index == size - 1){

            //删除尾结点

            Node prevNode = get(index - 1);

            removedNode = prevNode.next;

            prevNode.next = null;

            last = prevNode;

        }

        else{

            Node prevNode = get(index - 1);

            Node nextNode = prevNode.next.next;

            removedNode = prevNode.next;

            prevNode.next = nextNode;

        }

        size--;

        returnremovedNode;

    }

    //查找链表元素

    publicNode get(int index) throws Exception{

        if(index < 0 || index >= size){

            thrownewIndexOutOfBoundsException("超出链表节点范围!");

        }

        Node temp = head;

        for(int i = 0; i < index; i++){

            temp = temp.next;

        }

//        size--;

        returntemp;

    }

    //输出链表

    publicvoid output(){

        Node temp = head;

        while(temp != null){

            System.out.println(temp.data);

            temp = temp.next;

        }

    }

    publicstaticvoid main(String[] args) throws Exception{

        MyLinkedList myLinkedList = newMyLinkedList();

        myLinkedList.insert(3,0);

        myLinkedList.insert(7,1);

        myLinkedList.insert(9,2);

        myLinkedList.insert(5,3);

        myLinkedList.insert(6,1);

        myLinkedList.remove(0);

        myLinkedList.update(2,1);

        myLinkedList.output();

        System.out.println(myLinkedList.size);

    }

}

想了解更多相关教程可以访问:java开发入门

相关文章

  • 如何实现java链表中的基本操作(增、删、查、改)

    如何实现java链表中的基本操作(增、删、查、改) 链表也是一个线性的数据结构,与数组不同的是,链表在内存中的存储...

  • mysql_基础操作

    基本操作 约束 增 删 改 插 查

  • PDO操作

    基本操作 预处理(增、删、改)操作 预处理(查)操作

  • PHP操作数据库增删查改

    周末有空弄了下数据库操作,实现了增删查改的基本操作,记录一下。 一、增 二、删 三、查 四、改 API测试 1、增...

  • Leetcode总结 -- 链表

    目录 链表的基本操作 改/遍历:while(?) 查: 返回倒数K个节点 增/删除:反转链表,删除链表中的重复节点...

  • SQL基本操作

    基本操作:CRUD(Create增、Retrieve查、Update改、Delete删)SQL基本操作根据操作对象...

  • LinkedList

    介绍内部是个双向循环链表来实现的 增: 插入结点 批量增加 删: 查: 改:

  • 1、【MySQL】 库表的增删改查

    一、库操作 1、增 2、查 3、改 4、删 二、表操作 1、增 2、查 3、改 4、删 三、数据 1、增 2、查 ...

  • 0815 A

    mongod 操作 (续) 增 删 查 改

  • MongoDB与Python交互

    连接 文档操作 增 删 改 查

网友评论

      本文标题:如何实现java链表中的基本操作(增、删、查、改)

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