【java-数据结构13-双向链表的增删查改1】

05-14 阅读 0评论

  在上一篇文章中,我们已将双向链表成功创建,接下来,我们将对链表进行增删查改,敬请期待叭~(觉得小编写的还可以的可以可以留个关注~)

(1.遍历链表

思路:定义一个cur,让cur等于head,一直往后走即可,循环条件为cur!=null

【java-数据结构13-双向链表的增删查改1】

代码如下

  public void display(){
        ListNode cur = head;
        while (cur != null) {
            System.out.print(cur.val+" ");
            cur = cur.next;
        }
        System.out.println();
    }

调用测试

 public static void main(String[] args) {
        MyLinkedList myLinkedList = new MyLinkedList();
        myLinkedList.display();
    
    }

运行截图 

    【java-数据结构13-双向链表的增删查改1】

 

2.得到链表长度

只需在上面的基础上定义一个计数器,每走一次,count++即可

代码如下

 public int size(){
        ListNode cur = head;
        int count = 0;
        while (cur != null) {
            count++;
            cur = cur.next;
        }
        return count;
    }

调用测试

public static void main(String[] args) {
        MyLinkedList myLinkedList = new MyLinkedList();
        
        System.out.println(myLinkedList.size());
      
    }

运行截图 

【java-数据结构13-双向链表的增删查改1】

3.判断是否包含关键字key

定义一个cur,让cur等于head,加一个判断条件即可

代码如下

 public boolean contains(int key){
        ListNode cur = head;
        while (cur != null) {
            if(cur.val == key) {
                return true;
            }
            cur = cur.next;
        }
        return false;
    }

调用测试

 public static void main(String[] args) {
        MyLinkedList myLinkedList = new MyLinkedList();
       
        System.out.println(myLinkedList.contains(10));
    }

运行截图 

【java-数据结构13-双向链表的增删查改1】

4.头插法

 这里我们先定义一个 node节点,如图

【java-数据结构13-双向链表的增删查改1】

接下来就是改节点,和具体代码

【java-数据结构13-双向链表的增删查改1】

 然而,只是这样,我们还忘记了一个重要细节,如果head为空,那么node就是整个链表的头,也是整个链表的尾,如图

【java-数据结构13-双向链表的增删查改1】

代码如下

public void addFirst(int data){
        ListNode node = new ListNode(data);
        if(head == null) {
            head = node;
            last = node;
        }else {
            node.next = head;
            head.prev = node;
            head = node;
        }
    }

调用测试

public static void main(String[] args) {
        MyLinkedList myLinkedList = new MyLinkedList();
        myLinkedList.addFirst(56);
        myLinkedList.addFirst(45);
        myLinkedList.addFirst(34);
        myLinkedList.addFirst(23);
        myLinkedList.addFirst(12);
        myLinkedList.display();
    }

运行测试

【java-数据结构13-双向链表的增删查改1】

5,尾插法

 与头插法一样,还是定义node节点,在进行插入,当然也不要忘记head为空的情况,如图

【java-数据结构13-双向链表的增删查改1】

代码如下

 public void addLast(int data){
        ListNode node = new ListNode(data);
        if(head == null) {
            head = node;
            last = node;
        }else {
            last.next = node;
            node.prev = last;
            last = last.next;
        }
    }

调用测试

 public static void main(String[] args) {
        MyLinkedList myLinkedList = new MyLinkedList();
        myLinkedList.addFirst(56);
        myLinkedList.addFirst(45);
        myLinkedList.addFirst(34);
        myLinkedList.addFirst(23);
        myLinkedList.addFirst(12);
        myLinkedList.addLast(67);
        myLinkedList.display();
     
    }

运行截图 

【java-数据结构13-双向链表的增删查改1】

   虽然今天的方法有点多,但是我i相信大家,经过单向链表的学习,大家对双向链表也一定能够举一反三,其实方法都大差不差,那么明天我们将继续对双向链表进行增删查改,谢谢观看~


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]