赞
踩
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
思路如下
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();
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。