链表之两两交换链表中的相邻节点
作者:互联网
问题
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
解决
思路如下
public static Node changeAdjoiningNode(Node<Integer> headNode){
Node<Integer> virtualNode = new Node(-1,null);
// 虚拟节点下一节点 指向头节点
virtualNode.setNext(headNode);
// current指向虚拟节点
Node currentNode = virtualNode;
// 实际交换元素1,2 存在
while (currentNode.getNext() != null && currentNode.getNext().getNext()!= null){
System.out.println();
// 缓存节点3
Node temp = headNode.getNext().getNext();
// currentNode下一节点指向 节点2
currentNode.setNext(headNode.getNext());
// 节点2 下一节点 指向 节点1
headNode.getNext().setNext(headNode);
// 节点1 下一节点 指向 节点3
headNode.setNext(temp);
// 下移一位
currentNode = headNode;
headNode = headNode.getNext();
}
return virtualNode.getNext();
}
标签:getNext,Node,currentNode,链表,相邻,headNode,节点 来源: https://blog.csdn.net/qq_44787816/article/details/122649118