public static ListNode swapPairs(ListNode head) {//passed
        if (head == null || head.next == null) {
            return head;
        }
        ListNode addi_head = new ListNode(0);
        addi_head.next = head;
        ListNode p_prev = addi_head;
        ListNode p = head;
        while (p != null && p.next != null) {
            ListNode p_next = p.next;
            p.next = p_next.next;
            p_prev.next = p_next;
            p_next.next = p;
            p_prev = p_prev.next.next;
            p = p.next;
        }
        return addi_head.next;
    }