一道java链表节点互换的问题?

 

有大神可以讲一下这道题怎么做吗?

 

```java

public class DListNode {

    public static void main(String[] args) {
        Node node1 = new Node(1, null, null);
        Node node2 = new Node(2, null, null);
        Node node3 = new Node(3, null, null);
        Node node4 = new Node(4, null, null);
        Node node5 = new Node(5, null, null);
        node1.setNext(node2);

        node2.setPrev(node1);
        node2.setNext(node3);

        node3.setPrev(node2);
        node3.setNext(node4);

        node4.setPrev(node3);
        node4.setNext(node5);

        node5.setPrev(node4);

        changePos(node2,node4);

        System.out.println(node1);

    }

    public static void changePos(Node nodeA, Node nodeB) {

        Node aPrev,aNext,bPrev,bNext;

        aPrev = nodeA.getPrev();
        aNext = nodeA.getNext();

        bNext = nodeB.getNext();
        bPrev = nodeB.getPrev();

        nodeA.setPrev(bPrev);
        bPrev.setNext(nodeA);
        nodeA.setNext(bNext);
        bNext.setPrev(nodeA);


        nodeB.setPrev(aPrev);
        nodeB.setNext(aNext);
        aPrev.setNext(nodeB);
        aNext.setPrev(nodeB);
    }


    @Data
    static class Node {
        int data;
        Node prev;
        Node next;

        public Node(int data, Node prev, Node next) {
            this.data = data;
            this.prev = prev;
            this.next = next;
        }

        @Override
        public String toString() {
            return "Node{" +
                    "data=" + data +
                    ", prev=" + prev +
                    ", next=" + next +
                    '}';
        }
    }
}

```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值