当前位置:   article > 正文

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

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

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

(1.遍历链表

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

代码如下

  1. public void display(){
  2. ListNode cur = head;
  3. while (cur != null) {
  4. System.out.print(cur.val+" ");
  5. cur = cur.next;
  6. }
  7. System.out.println();
  8. }

调用测试

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

运行截图 

    

 

2.得到链表长度

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

代码如下

  1. public int size(){
  2. ListNode cur = head;
  3. int count = 0;
  4. while (cur != null) {
  5. count++;
  6. cur = cur.next;
  7. }
  8. return count;
  9. }

调用测试

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

运行截图 

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

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

代码如下

  1. public boolean contains(int key){
  2. ListNode cur = head;
  3. while (cur != null) {
  4. if(cur.val == key) {
  5. return true;
  6. }
  7. cur = cur.next;
  8. }
  9. return false;
  10. }

调用测试

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

运行截图 

4.头插法

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

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

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

代码如下

  1. public void addFirst(int data){
  2. ListNode node = new ListNode(data);
  3. if(head == null) {
  4. head = node;
  5. last = node;
  6. }else {
  7. node.next = head;
  8. head.prev = node;
  9. head = node;
  10. }
  11. }

调用测试

  1. public static void main(String[] args) {
  2. MyLinkedList myLinkedList = new MyLinkedList();
  3. myLinkedList.addFirst(56);
  4. myLinkedList.addFirst(45);
  5. myLinkedList.addFirst(34);
  6. myLinkedList.addFirst(23);
  7. myLinkedList.addFirst(12);
  8. myLinkedList.display();
  9. }

运行测试

5,尾插法

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

代码如下

  1. public void addLast(int data){
  2. ListNode node = new ListNode(data);
  3. if(head == null) {
  4. head = node;
  5. last = node;
  6. }else {
  7. last.next = node;
  8. node.prev = last;
  9. last = last.next;
  10. }
  11. }

调用测试

  1. public static void main(String[] args) {
  2. MyLinkedList myLinkedList = new MyLinkedList();
  3. myLinkedList.addFirst(56);
  4. myLinkedList.addFirst(45);
  5. myLinkedList.addFirst(34);
  6. myLinkedList.addFirst(23);
  7. myLinkedList.addFirst(12);
  8. myLinkedList.addLast(67);
  9. myLinkedList.display();
  10. }

运行截图 

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/567920
推荐阅读
相关标签
  

闽ICP备14008679号