节点定义为:
public class LinkedNode {
public int val;
public LinkedNode next;
}
标题1 数组生成链表
public static LinkedNode createLinkedNode(int[] vals) {
LinkedNode head = null;
if (vals != null) {
head = new LinkedNode(vals[0]);
LinkedNode cur = head;
for (int i = 1; i < vals.length; i++) {
LinkedNode temp = new LinkedNode(vals[i]);
cur.next = temp;
cur = cur.next;
}
}
// return head;
// 22 dummyHead
LinkedNode dummyHead = new LinkedNode(0);
LinkedNode cur = dummyHead;
for (int i = 0; i < vals.length; i++) {
cur.next = new LinkedNode(vals[i ]);
cur = cur.next;
}
return dummyHead.next;
}
标题2 两两交换
public static LinkedNode switch2(LinkedNode head) {
LinkedNode dummyHead = new LinkedNode(0);
dummyHead.next = head;
LinkedNode cur = dummyHead;
while ( cur.next != null && cur.next.next != null) {
LinkedNode temp1 = cur.next;
LinkedNode temp2 = cur.next.next.next;
cur.next = cur.next.next;
cur.next.next = temp1;
temp1.next = temp2;
cur =cur.next.next;
}
return dummyHead.next;
}
// 测试
LinkedNode sw2 = LinkedNode.createLinkedNode(new int[] {2,3,4,5,6,});
LinkedNode.printNode(sw2);
LinkedNode.printNode(LinkedNode.switch2(sw2));
LinkedNode.printNode(LinkedNode.switch2(null));