C++数据结构——链表中交换相邻节点

1.单纯交换节点内部的值:

ListNode * swapPairs(ListNode * head) {
        // write your code here
        ListNode* p = head;
        while(p != NULL && p->next != NULL){
            ListNode* q = p->next;
            int temp = q->val;
            q->val = p->val;
            p->val = temp;
            p = p->next->next;
        }
        return head;
}

2.不能只单纯的改变节点内部的值,而是需要实际的进行节点交换:
C++数据结构——链表中交换相邻节点_第1张图片

ListNode* swapPairs(ListNode* head) {
        ListNode* w = new ListNode(0);
        w->next = head;
        ListNode* temp = w;
        while (temp->next != NULL && temp->next->next != NULL) {
            ListNode* node1 = temp->next;
            ListNode* node2 = temp->next->next;
            temp->next = node2;
            node1->next = node2->next;
            node2->next = node1;
            temp = node1;
        }
        return w->next;
    }

你可能感兴趣的:(数据结构和算法)