【java-数据结构13-双向链表的增删查改1】
在上一篇文章中,我们已将双向链表成功创建,接下来,我们将对链表进行增删查改,敬请期待叭~(觉得小编写的还可以的可以可以留个关注~)
(1.遍历链表
思路:定义一个cur,让cur等于head,一直往后走即可,循环条件为cur!=null
代码如下
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(); }
运行截图
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()); }
运行截图
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)); }
运行截图
4.头插法
这里我们先定义一个 node节点,如图
接下来就是改节点,和具体代码
然而,只是这样,我们还忘记了一个重要细节,如果head为空,那么node就是整个链表的头,也是整个链表的尾,如图
代码如下
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(); }
运行测试
5,尾插法
与头插法一样,还是定义node节点,在进行插入,当然也不要忘记head为空的情况,如图
代码如下
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(); }
运行截图
虽然今天的方法有点多,但是我i相信大家,经过单向链表的学习,大家对双向链表也一定能够举一反三,其实方法都大差不差,那么明天我们将继续对双向链表进行增删查改,谢谢观看~
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...