给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
解决思路如下
public static Node changeAdjoiningNode(NodeheadNode){ Node 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(); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)