赞
踩
在上一篇文章中,我们已将双向链表成功创建,接下来,我们将对链表进行增删查改,敬请期待叭~(觉得小编写的还可以的可以可以留个关注~)
思路:定义一个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();
-
-
- }
运行截图
只需在上面的基础上定义一个计数器,每走一次,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());
-
-
-
- }
运行截图
定义一个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));
-
-
- }
运行截图
这里我们先定义一个 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();
-
- }
运行测试
与头插法一样,还是定义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相信大家,经过单向链表的学习,大家对双向链表也一定能够举一反三,其实方法都大差不差,那么明天我们将继续对双向链表进行增删查改,谢谢观看~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。